기본기)정렬)c#) 셸 정렬(Shell Sort)
셸 정렬(Shell Sort) 가장 오래된 정렬 알고리즘 중 하나로 삽입 정렬의 단점을 보완한 알고리즘이다. 삽입 정렬이 어느 정도 정렬된 배열에 대해서는 빠른 것에 단점을 보안해서 만든 것으로 정렬해야 할 노드의 리스트를 k번째 요소를 추출해서 부분 리스트를 만든다. 이때 간격(Gap)을 기준으로 부분 리스트를 순차적으로 만든다. 간격의 초기값은 정렬할 크기 / 2, 생성된 부분 리스트 개수는 grap과 같다. 각 회전마다 간격 k를 절반으로 줄이면서 회전이 반복될 때마다 부분 리스트에 포함된 값은 증가한다. gap은 홀수로 하는 것이 좋다. gap이 1이 될때까지 반복한다. 배열 10, 8, 6, 20, 4, 3, 22, 1, 0 , 15, 16을 정렬할 때를 예시로 보면 다음과 같다. 코드는 다음과..
2020. 8. 29.