Study/자료구조

[자료구조] 정렬 #3 - 삽입정렬(Insertion Sort)

_gayeon 2021. 2. 2. 12:06

삽입정렬이란?

: 앞에서부터 이미 정렬된 배열 부분과 비교하여 맞는 위치에 삽입하는 정렬

- 앞에있는 값부터 key가 되어 올바른 위치에 삽입된다.

- 첫번째 key값은 두번째 index부터

 

시간복잡도

Best: 이미 정렬되어 있는 경우 O(n)

Worst: 역순으로 정렬되어 있는 경우 O(n^2)

 

구현 (오름차순)

void insertionSort(int a[], int size) {
	int min;
    
    for(int i=1; i<size; i++){
    	int key = a[i];
        int j;
        
        for(j=i-1; j>=0; j--){
            if(a[j] > key){
            	a[j+1]=a[j];
            }
            else{
            	break;
            }
        }
        a[j+1] = key;
    }
}

 

출처

gmlwjd9405.github.io/2018/05/06/algorithm-insertion-sort.html