排序演算法 直接插入排序演算法的實現與改進

2021-08-22 08:26:39 字數 1271 閱讀 7524

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次的插入即能完成排序 ...