插入排序是最经常使用的排序之一。算法
在输入规模较小的时候,插入排序的性能较好。性能
最好状况下插入排序的时间复杂度是O(n),平均状况则为O(n2)。spa
插入排序是稳定的排序算法之一。指针
基本思路为从第二个元素开始,依次插入前面已经排好序的序列,利用循环不变式很容易理解。code
代码以下:(仅供参考)blog
1 void InsertionSort(int * const begin, int * const end) { 2 int i, j; 3 int key; 4 for (i = 1; i < end - begin; ++i) { 5 key = *(begin + i); 6 for (j = i - 1; j >= 0 && (*(begin + j) > key); --j) { 7 *(begin + j + 1) = *(begin + j); 8 } 9 *(begin + j + 1) = key; 10 } 11 }
注:指针须要支持随机访问排序