对序列 A 中的 n 个元素 A[1]~A[n],令 i 从 2 到 n 枚举,进行 n-1 趟操作。
假设某一趟时,序列 A 的前 i-1 个元素 A[1]~A[i-1] 已经有序,而范围 [1, n] 还未有序,
那么该趟 从范围 [1, i-1] 中寻找某个位置 j,使得 A[i] 插入位置 j 后,范围 [1, i] 有序。
了解:插入排序是将 待插入元素 一个个插入初始已有序部分中的过程,而插入位置的选择遵循了使插入后仍然保持有序的原则。
#include <stdio.h>
int A[5] = {3, 1, 4, 5, 2};
void insertSort(){
for(int i = 1; i < 5; i++){
int temp = A[i], j = i;
while(j > 0 && temp < A[j-1]){
A[j] = A[j-1];
j--;
}
A[j] = temp;
}
}
int main(){
insertSort();
for(int i = 0; i < 5; i++){
printf("%d ", A[i]);
}
return 0;
}