1. 程式人生 > >【排序演算法】:直接插入排序

【排序演算法】:直接插入排序

介紹

思想:每次從無序表中取出第一個元素,把它插入到有序表的合適位置,使有序表仍然有序。
實現原理:第一趟比較前兩個數,然後把第二個數按大小插入到有序表中; 第二趟把第三個資料與前兩個數從後向前掃描,把第三個數按大小插入到有序表中;依次進行下去,進行了(n-1)趟掃描以後就完成了整個排序過程。
時間複雜度:O(N^2);
空間複雜度:O(1);
穩定性:穩定;

程式碼實現

程式碼實現:

//直接插入排序
void InsertSort(int* arr, int len)//升序排列
{
    assert(arr);
    assert(len > 0);
    for
(int i = 1; i <len; i++) { int temp = arr[i]; int j = i - 1; while (j>=0 && temp < arr[j]) { arr[j + 1] = arr[j]; j--; } arr[j + 1] = temp; } }