KTUG마당은 KTUG를 방문하는 모든 이용자가 대화를 나누고 소식을 전하는 곳입니다.

  • 로그인 없이 자유롭게 글을 읽고 쓸 수 있는 철학은 처음과 같이 계속됩니다.
  • Team Blog의 글을 이곳 게시판의 "정보글"로 모았습니다. Team blog는 기고자가 올린 글에 질문과 답을 받는 부담을 줄이기 위하여 댓글을 허용하지 않았습니다. 그러나 이곳 게시판으로 모으면서 댓글을 달 수 있습니다. 게시물을 작성하실 때 댓글을 원하지 않으시면 댓글을 허용하시지 않으시기를 바랍니다. 또한 불필요한 소모성 댓글을 달지 않도록 주의하여 주시기를 바랍니다.
  • TeX과 관련된 질문이나 답변은 QnA 마당을 이용하십시오. TeX과 관련된 질문은 지웁니다
  • MathJax를 이용한 수식조판을 사용하실 수 있습니다. 여기를 참조하세요.
  • 최근 스팸글의 등록 빈도가 높아 졌습니다. 이를 막기위하여 짧은 시간내에 다시 글이 등록되는 IP를 막거나, 광고글을 막기위하여 금지어로 .com, .net등을 설정하고 있습니다. 다소간의 불편함이 있으시더라도 양해 바랍니다.
  • 사용하는 편집기를 스마트에디터에서 CKeditor로 변경하였습니다. 편집기에서 [enter]를 누르면 <p> 태그가 들어가고, 문단으로 생각하고 한줄을 비웁니다. 글줄만 바꾸려면 shift-enter 를 누르시면 <BR>가 들어가므로 용도에 맞게 나누어 쓸 수 있습니다.

정보글 문자열의 삽입정렬

2012.10.08 16:51

karnes 조회 수:3234 추천:1

문자열 정렬에 대해서는 DohyunKim 님의 http://www.ktug.or.kr/xe/index.php?document_srl=33728 이 있다.

다음 소스는 xfor 패키지에서 가져온 것으로 원래 숫자에 대해서만 삽입정렬하게 한 것인데 윗글의 \pdfstrcmp를 이용하여 문자열 정렬을 시도해보았다.

정렬 방식은 삽입정렬(insertion sort)


\documentclass{oblivoir}


\usepackage{xfor}


\makeatletter

\newcommand{\insertinto}[2]{%

\def\nlst{}% new list initially empty

\@for\n:=#2\do{%

% store new list in \toks@

\expandafter\toks@\expandafter{\nlst}%

% test current value against new value

%%%\ifnum\n>#1\relax %%%

\ifnum\pdfstrcmp{\n}{#1}=1\relax

% new value needs to be inserted before current value

\edef\newstuff{#1,\n}%

% end for loop at the end of this iteration

\@endfortrue

\else

\edef\newstuff{\n}%

\fi

% append new stuff to new list

\ifx\nlst\@empty

\edef\nlst{\newstuff}%

\else

\edef\nlst{\the\toks@,\newstuff}%

\fi

}%

% check to see if for loop was prematurely terminated

\if@endfor

% loop may have been terminated during final iteration, in

% which case \@forremainder is empty.

\ifx\@forremainder\@empty

% do nothing

\else

% loop prematurely ended, append remainder of original list

% to new list

\expandafter\toks@\expandafter{\nlst}%

\edef\nlst{\the\toks@,\@forremainder}%

\fi

\else

% wasn't prematurely terminated, so new value hasn't been added

% so add now.

\expandafter\toks@\expandafter{\nlst}%

\ifx\nlst\@empty

\edef\nlst{#1}%

\else

\edef\nlst{\the\toks@,#1}%

\fi

\fi

\global\let#2=\nlst

}


\newcommand*{\insertionsort}[1]{%

\def\sortedlist{}%

\@for\val:=#1\do{{\insertinto{\val}{\sortedlist}}}%

\let#1=\sortedlist

}


\makeatother


\begin{document}


\def\chlist{받,은,편,지,함,의,메,일,을,모,두,읽,으,셨,습,니,다}

\insertionsort{\chlist}

\chlist


\def\chlist{{독도는},{우리},{땅이다},{민족},{국가},{자유}}

\insertionsort{\chlist}

\chlist


\end{document}


결과:

outtag.PNG


번호 제목 글쓴이 날짜 조회 수
공지 2019 한국텍학회 제12차 정기총회 및 학술대회 [2] yihoze 2019.01.04 46152
공지 KTUG 사설저장소 브라우저 베이드프즈 2017.07.16 49345
공지 장애 복구 안내 [9] 관리자 2017.05.04 52035
공지 TeX Live 2016 설치 안내 [7] 관리자 2016.06.05 86408
94 원숫자 file yihoze 2014.01.02 21127
93 MiKTeX 2.9에서 cjk-ko와 xetexko 사용하기 file karnes 2013.10.25 5250
92 맑은 고딕, Windows 7의 것과 8의 것 file karnes 2013.10.08 4577
91 dhucs-nanumfont.sty file karnes 2013.09.26 2778
90 xetexko의 에러 메세지 gromov 2013.08.13 2735
89 정확한(!) 크기의 네모 박스 그리기 DohyunKim 2013.03.13 3155
88 전처리 과정 없앤 xindy 한글 모듈 DohyunKim 2011.08.05 4287
87 때로 문단 간격이 너무 커져서 보기 싫을 때 DohyunKim 2013.02.22 2587
86 cjk-ko 텍라이브 버전 DohyunKim 2013.02.20 2506
85 조건부 컴파일 DohyunKim 2012.11.13 3214
84 TeX writer (iOS) 한글 패키지 만들기 DohyunKim 2013.01.21 4335
83 하이픈과 페널티 DohyunKim 2012.11.05 3631
» 문자열의 삽입정렬 file karnes 2012.10.08 3234
81 Windows에서 pdfjam karnes 2012.09.20 2610
80 제주어 지원 첫가끝 표준 글꼴 DohyunKim 2012.09.19 4148
79 Windows에서 basic하게 사는 법 (2) file karnes 2012.08.01 5802
78 윈도우즈에서 basic하게 사는 법 file karnes 2012.07.13 3114
77 Linux상에서 TeXLive2012를 medium 설치했을 때 karnes 2012.07.12 2344
76 Cygwin을 써야 할 세 가지 이유 file karnes 2012.04.18 5700
75 아래글 YHVH 코드 루아텍 버전 DohyunKim 2012.02.27 2842



XE Login