1、最優時間複雜度:o(n);
最差情況時間複雜度:o(n^2) ;
穩定排序演算法;
2、演算法核心:
(1)準確找到插入位置;
(2)將該位置之後的元素全部後移一位;
所以時間消耗在大量的資料移動上。
3、演算法步驟:
(1)將第乙個元素看作乙個有序序列,而將第2個元素到最後乙個元素看作未排序序列;
(2)從頭到尾掃瞄未排序序列,將掃瞄到每個元素插入到合適的位置,直至排序結束。
4、優化策略
採用二分法快速找到插入位置。
5、未加二分法的插入排序演算法實現的**
/*****
*****
*****
*****
*****
*****
*****
*****
*****
*****
*****
*****
*****
*****
*****
* @file main.c
* @author haojiefenglang
* @date 6 august 2018
* @remark 6 august 2017
* @theme insert sort
/*****
*****
*****
*****
*****
*****
*****
*****
*****
*****
*****
*****
*****
*****
*****
#include
#include
void insertsort(int a, int n)
a[j + 1] = temp;}}
printf("比較次數%d,移動次數%d\n", count1, count2);
}int main()
;int n = 10;
insertsort(a, n);
printf("插入排序後為: ");
for (int i = 0; i < n; i++)
printf("%d ", a[i]);
printf("\n");
return 0;
}
實現直接插入排序演算法
實驗題目 實現直接插入排序演算法 實驗目的 領會直接插入排序的過程和演算法設計 實驗內容 設計程式,實現直接插入排序演算法。用相關資料進行測試,並 輸出各趟的排序結果。include define max len 100 最大長度 typedef int key type 定義關鍵字型別為int t...
排序演算法 直接插入排序
思想 每次從無序表中取出第乙個元素,把它插入到有序表的合適位置,使有序表仍然有序。第一趟比較前兩個數,然後把第二個數按大小插入到有序表中 第二趟把第三個資料與前兩個數從前向後掃瞄,把第三個數按大小插入到有序表中 依次進行下去,進行了 n 1 趟掃瞄以後就完成了整個排序過程。演算法複雜度 如果目標是把...
排序演算法 直接插入排序
說到排序演算法,我們常用的也就7種,即 直接插入排序,希爾排序,簡單選擇排序,堆排序,氣泡排序,快速排序,歸併排序。下面我將依次詳細地介紹這幾種排序演算法。1 直接插入排序 插入,即表示將乙個新的資料插入到乙個有序陣列中,並繼續保持有序。例如有乙個長度為n的無序陣列,進行n 1次的插入即能完成排序 ...