八大排序演算法之一直接插入排序(C語言)

2021-07-01 23:44:27 字數 1163 閱讀 2534

排序有內部排序和外部排序,內部排序是資料記錄在記憶體中進行排序,而外部排序是因排序的資料很大,一次不能容納全部的排序記錄,在排序過程中需要訪問外存。

我們這裡說說八大排序就是內部排序。

當n較大,則應採用時間複雜度為

o(nlog2n)

的排序方法:快速排序、堆排序或歸併排序序。

快速排序:是目前基於比較的內部排序中被認為是最好的方法,當待排序的關鍵字是隨機分布時,快速排序的平均時間最短;

基本思想:

將乙個記錄插入到已排序好的有序表中,從而得到乙個新,記錄數增1的有序表。即:先將序列的第1個記錄看成是乙個有序的子串行,然後從第2個記錄逐個進行插入,直至整個序列有序為止。

要點:設立哨兵,作為臨時儲存和判斷陣列邊界之用。

直接插入排序示例:

如果碰見乙個和插入元素相等的,那麼插入元素把想插入的元素放在相等元素的後面。所以,相等元素的前後順序沒有改變,從原無序序列出去的順序就是排好序後的順序,所以插入排序是穩定的。

演算法的實現:

它的核心思想為:將乙個記錄插入到乙個已經排序好的表中,以得到乙個記錄增一的有序表。並且最關鍵的一點就是它把比當前元素大的記錄都往後移動,用以騰出「自己」該插入的位置。當

n-1趟插入完成後該記錄就是有序序列。

#include "stdio.h"

void insert_sort(int a,int n)

//待排序元素用乙個陣列

a表示,陣列有

n個元素

a[j+1]=temp;//元素後移後要插入的位置就空出了,找到該位置插入}

} void main();

int i=0;

insert_sort(array,6);

for(;i<=5;i++)

printf("[%d]",array[i]);

getch(); }

效率:

時間複雜度:o(n^2).

八大排序 直接插入排序

直接插入排序 straight insertion sort 的基本操作是將乙個元素插入到序列已經有序的那一部分中去,從而使序列中有序的部分逐漸擴大,直到整個序列有序。博主認為直接插入排序過程比較容易理解,所以不作過多贅述,直接上 include void main int length sizeo...

八大排序 插入排序 直接插入排序

基本思想 將乙個記錄插入到已排序好的有序表中,從而得到乙個新,記錄數增1的有序表。即 先將序列的第1個記錄看成是乙個有序的子串行,然後從第2個記錄逐個進行插入,直至整個序列有序為止。要點 設立哨兵,作為臨時儲存和判斷陣列邊界之用。直接插入排序示例 如果碰見乙個和插入元素相等的,那麼插入元素把想插入的...

排序演算法之一 直接插入排序

直接插入排序中加入了附加記錄,又稱監視哨或者哨兵。哨兵的主要作用 進人查詢 插入位置 迴圈之前,它儲存了r i 的副本,使不致於因記錄後移而丟失r i 的內容 它的主要作用是 在查詢迴圈中監視下標變數j是否越界。一旦越界 即j 0 因為r 0 可以和自己比較,迴圈判定條件不成立使得查詢迴圈結束,從而...