插入排序 - C语言
插入排序的思想:
以现有的已排序元素为基础,下一个元素添加到正确的位置,则最终会完成排序。
第一个元素本身是已经排序好的。从第二个开始排。
void insertSort(int arr[], int N) { int tmp, j; for(int i= 1; i < N ; i++) { tmp = arr[i]; for(j=i; j>0 && arr[j-1] > tmp ;j--) { arr[j] = arr[j-1]; } arr[j] = tmp; } } int main() { int test[10] = {1, 13, 8, 99, 10, 29, 9, 0, 19, 5}; insertSort(test, 10); return 0; }
好,来分析一下代码。
首先,拿起来一个元素,从第二个开始。
对已排序的队列从后向前检查,只要没到头并且检查的数比它大就继续向前找,并且这些比它大的向后移动一个位置。
找到了,那么就将它放在现在这个位置,因为比它大的都后移动了。