#include <stdio.h>
void arrayShow(int array[], int size)
{
int i = 0;
for (i = 0; i < size; i++) {
printf("%d ", array[i]);
}
printf("\n");
}
void directInsertSort(int array[], int size)
{
int i = 0, j = 0;
int tmp = 0;
for (i = 1; i < size; i++) {
tmp = array[i];
for (j = i - 1; (tmp < array[j]) && (j >= 0); j--) {
array[j+1] = array[j];
}
array[j+1] = tmp;
}
}
int main(int argc, const char *argv[])
{
int array[] = {45, 66, 32, 11, 55, 99, 33, 1, 5, 100, 4, 105,33};
int size = sizeof(array) / sizeof(int);
arrayShow(array, size);
directInsertSort(array, size);
arrayShow(array, size);
return 0;
}
解析:
从array[1]开始,先保存到tmp中(备份),然后将tmp依次跟前面的数据进行比较,如果array[j]大就将其向后挪一位,如果小则将tmp保存在a[j+1]中。