有一個已經有序的數據序列,要求在這個已經排好的數據序列中插入一個數,但要求插入後此數據序列仍然有序,這個時候就要用到一種新的排序方法——插入排序法,插入排序的基本操做就是將一個數據插入到已經排好序的有序數據中,從而獲得一個新的、個數加一的有序數據,算法適用於少許數據的排序,時間複雜度爲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; } }