有一个已经有序的数据序列,要求在这个已经排好的数据序列中插入一个数,但要求插入后此数据序列仍然有序,这个时候就要用到一种新的排序方法——插入排序法,插入排序的基本操做就是将一个数据插入到已经排好序的有序数据中,从而获得一个新的、个数加一的有序数据,算法适用于少许数据的排序,时间复杂度为O(n^2)。是稳定的排序方法。插入算法把要排序的数组分红两部分:第一部分包含了这个数组的全部元素,但将最后一个元素除外,而第二部分就只包含这一个元素。在第一部分排序后,再把这个最后元素插入到此刻已经是有序的第一部分里的位置算法
/** 插入排序分为有序和乱序的部分,通常将第一个元素做为有序部分。 */ void insert_sort(int *arr, int len) { for (int i = 1; i < len; i++) { int j = i; int t = arr[i]; while (j > 0 && t < arr[j - 1]) { arr[j] = arr[j - 1]; j--; } arr[j] = t; } }