#include <stdio.h>
void InsertionSort(int a[], int size);
int main(void)
{
int arr[] = {1, -3, 5, 0, 9 ,6, 4};
InsertionSort(arr, sizeof(arr)/sizeof(arr[0]));
unsigned int i;
for (i=0; i<sizeof(arr)/sizeof(arr[0]); i++){
printf("%d ", arr[i]);
}
printf("\n");
return 0;
}
void InsertionSort(int a[], int size)
{
int i, j, k;
for (i=1; i<size; i++){
// a[i] 是最左边的无序元素,每次循环将 a[i] 插入合适的位置
for (j=0; j<i; j++){
// 找合适位置
if (a[j] > a[i]){
int tmp = a[i];
// 将下标 j 到 i-1 的元素往后挪一个位置
for (k=i; k>j; k--){
a[k] = a[k-1];
}
a[j] = tmp;
break;
}
}
}
}
排序后结果: