나름대로 이름을 붙여 본 것이다.

프로그래밍을 하다보면 정렬 알고리즘을 많이 사용할 것이다. 그 중 깔끔하면서도 빠른 Quick Sort 가 많은 사랑을 받으리라 생각된다.

나 역시 Quick Sort를 자주 쓰고 있다.

그렇지만 Quick Sort가 모든 경우에 가장 좋은 결과를 보여 주지는 않는다.
다루는 데이터의 종류에 따라 결과가 많이 달라진다. 범용적으로 발표된 알고리즘 외에 다루고 있는 데이터에 맞게 최적화 된 알고리즘이 당연히 좋은 결과를 보여 줄 것이다.

업무상 다루고있는 데이터는 16비트 정수데이터이며, 그 수는 작게는 몇 천개에서 수만여개씩 수천개인데 이를 정렬 하여 특정 위치 혹은 특정 범위의 데이터를 추출 해야한다.

처음 시도는 Quick Sort를 사용하여 보았지만 만족할 만한 결과가 나오지 않았다.

보다 빠른 방법을 고민하던 중에 데이터의 범위가 한정 적이고 정수로만 이루어 점을 감안하여 구현해 보았다.

우선 16비트 정수이기 때문에 데이터의 범위는 0~65535 이므로 각 값 개수를 기록할 정수형 배열을 선언하고 준비된 데이터를 전체 스캔하며 카운팅을 한다.

그럼 정렬 끝.

굳이 정렬된 데이터가 필요하면 카운팅된 인덱스 배열은 한번 전체 스캔하면 된다.

정렬된 데이터가 없더라도 카운팅된 데이터 만으로도 특정 위치 데이터와 범위 데이터를 추출할 수 있다.

'Dev. Story' 카테고리의 다른 글

개발툴 편집기의 글자 색상 정하기...  (0) 2007.05.03
Batch 프로그래밍을 기억하나요?  (1) 2007.02.27
Delphi 2007 for PHP  (3) 2007.02.22
C++ Builder 에 날개를 달자~~~  (0) 2007.01.11
MSDN 을 위한 Search Plugin...  (0) 2006.11.01
Posted by NeoDreamer
:
BLOG main image
by NeoDreamer

공지사항

카테고리

분류 전체보기 (324)
생각 훔쳐보기 (43)
날적이 훔쳐보기 (32)
지난날 훔쳐보기 (3)
가족 이야기 (5)
비뚤어진 세상?보기 (2)
---------------* (0)
Com Story (127)
Dev. Story (17)
Book Story (3)
Movie Story (10)
Photo Story (10)
IT Story (11)
Product Story (1)
---------------+ (0)
Etc (59)

최근에 올라온 글

최근에 달린 댓글

최근에 받은 트랙백</h3>

Total :
Today : Yesterday :