
삽입 정렬은 2번째 원소부터 시작하여 그 앞(왼쪽)의 원소들과 비교하여 삽입할 위치를 지정한 후, 원소를 뒤로 옮기고 지정된 자리에 자료를 삽입하여 정렬하는 알고리즘이다.
손으로 카드를 정렬하는 방법과 유사하다.

void insertionSort(int arr[]) {
int n = arr.length;
for (int i = 1; i < n; ++i) { // 두 번째 원소부터 탐색한다.
int key = arr[i];
int j = i - 1;
// key보다 큰 원소를 한 위치씩 뒤로 보낸다.
while (j >= 0 && arr[j] > key) {
arr[j + 1] = arr[j];
j = j - 1;
}
// 삽입
arr[j + 1] = key;
}
}
Worst Case (반대로 정렬된 경우) :
Average Case :
Best Case (이미 정렬된 경우) :
in-place 알고리즘으로, 추가적인 자료구조를 사용하지 않는다.
Auxiliary Space (보조 공간) :