삽입 정렬(Insertion Sort)
삽입 정렬?
삽입 정렬은 이미정렬된 앞부분의 항들과 비교해서
사이에 작은 수를 삽입하여 정렬하는 방법입니다.
아래 위키백과의 애니메이션을 보면 쉽게 이해할 수 있습니다.
https://ko.wikipedia.org/wiki/%EC%82%BD%EC%9E%85_%EC%A0%95%EB%A0%AC
복잡도
삽입정렬의 복잡도는 아래와 같습니다.
배열을 이용한 삽입 정렬 예제
삽입 정렬 함수
기준항(temp)와 정렬된 앞 요소들의 크기를 비교하고 한칸 씩 뒤로 옮긴 후 기준항을 삽입합니다.
두 번째 항부터 비교를 시작하므로 i는 1부터 시작합니다.
void insertion_sort(int array[], int size){
int j,temp;
for(int i=1; i<size; i++){
j=i;
temp = array[i];
while(j>0 && array[j-1]>temp){
array[j] = array[j-1];
j--;
}
array[j] = temp;
}
}
실행 함수
정렬 전과 후 배열 출력
void main(){
int array[] = {11,10,33,22,55,9};
int size = sizeof(array)/sizeof(int);
printf("########### Sorting before ###########\n");
for(int i=0; i<size; i++){
printf("%-4d",array[i]);
}
insertion_sort(array,size);
printf("\n########### Sorting after ###########\n");
for(int i=0; i<size; i++){
printf("%-4d",array[i]);
}
}
실행 결과
참고 : C로 배우는 알고리즘 (이재규)
위키백과(삽입정렬)
관련 포스팅
[DataStructure] 기수 정렬(Radix Sort)
[DataStructure] 퀵 정렬(Quick Sort)
[DataStructure] 셸 정렬(Shell Sort)
[DataStructure] 버블 정렬(Bubble Sort)
[DataStructure] 삽입 정렬(Insertion Sort)
[DataStructure] 선택 정렬(Selection Sort)
'언어 > Data Strcuture' 카테고리의 다른 글
[C] 셸 정렬(Shell Sort) (2) | 2019.04.23 |
---|---|
[C] 버블 정렬(Bubble Sort) (0) | 2019.04.20 |
[C] 선택 정렬(Selection Sort) (0) | 2019.04.19 |
[C] 트리(Tree) (0) | 2019.04.07 |
[C] 큐(Queue) (2) | 2019.04.01 |