단순 삽입 정렬
아직 정렬되지 않은 부분의 첫 번째 요소를 정렬된 부분의 알맞은 위치에 삽입
void insertion(int a[], int n) {
int i, j;
for (i = 1; i < n; i++) { // 전 값과 비교하기 때문에 1인덱스부터 시작
int tmp = a[i]; // 삽입할 값 저장
for (j = i; j > 0 && a[j - 1] > tmp; j--) // 삽입할 값의 앞만 검사
a[j] = a[j - 1]; // 뒤로 한칸씩 옮김
// memmove(&a[j], &a[j - 1], sizeof(int)); // memory move 위치 이동 함수
a[j] = tmp; // 알맞은 위치에 삽입
}
}
비교 횟수
n(n - 1)/2 = (n - 1) + (n - 2) + ... + 1
시간 복잡도 : O(n^2)
장점