Algorithm

알고리즘 - 삽입 정렬

안중환 2015. 11. 12. 20:59

- insertion sort

오른쪽 리스트(정렬 안 된)에서 왼쪽 리스트(정렬 된)로 하나씩 자리를 찾아 삽입하면서 정렬

- 삽입을 위해 배열을 계속 이동시켜야 함

- 자료가 이미 정렬되어 있는 경우의 시간 복잡도 : 

  자료가 역순일 경우 최악의 
복잡도 : 


- 코드

void insertion_sort ( int *data, int n )
{
  int i, j, remember;
  for ( i = 1; i < n; i++ )
  {
    j = i;
    remember = data[j];
    while ( --j >= 0 && remember < data[j] )
        data[j+1] = data[j];
    data[j+1] = remember; 
  }
}