어쩌다 보니 우연히 발견한 방법인데요, 제가 알던 방법이 아닌 새로운 방법이라서 글로 남겨봅니다. ㅎㅎㅎ
먼저 이 알고리즘은 자료의 크기에 거의 영향을 받지 않아요.
주어지는 자료의 범위에 영향을 많이 받도록 되어 있답니다.
아래는 소스코드와 간략한 설명이에요^^
data[]에 다음과 같이 저장되어 있다고 가정하면
data[0]의 값이 5이니 data[5]에 1을 더해 주고,
data[1]의 값이 3이니 data[3]에 1을 더해 주고,... 하는 방법을 계속 수행을 하면 pos[]에 다음과 같이 저장이 됩니다.
그리고 출력할 때에는
pos[0]=0 이니 data[]에 0이 없다는 것이므로 출력을 하지 않고,
pos[1]=1 이니 data[]에 1이 1개 있다는 것이므로 1번 출력하고,
.
.
.
pos[3]=2 이니 data[]에 3이 2개 있다는 것이므로 2번 출력하고,.. 하는 과정을 반복하면 오름차순 정렬이 됩니다.
물론 반대 방향으로 내림차순도 됩니다.
-----------------------------------------------
이거 제가 제일 먼저 발견한 거 맞겠죠???????????
혹시 비슷한 방법이 이미 있다면 덧글 남겨주세요^^