C 語言排序演算法之插入排序

2021-09-29 09:20:56 字數 1018 閱讀 1820

1.基本思想:將未排序的資料元素按大小順序插入到已排好序資料序列中,對於未排序資料,在已排序序列中從後向前掃瞄,找到相應位置並插入。

例如:對2, 4, 3, 1, 6, 5進行插入排序。進行排序前,預設2是有序的,為有序區,而4, 3, 1, 6, 5是無序的,為無序區。將這五個無序的數按從小到大的順序插入到有序區。

第一趟排序:將4與有序區的2比較,若小於2則插到2前面,大於2插到2後面。操作後有序區為:;

第二趟排序:將3與有序區的每個數比較(與有序區的數按從右到左的順序比較,即依次與4,2比較),尋找合適的位置插入,操作後有序區為:。這裡將3插入到2和4之間。

……第五趟排序:將資料元素5與有序區的資料進行比較,並插入到有序區,則排序後的資料序列為:。

總結:

1.第一趟排序時預設無序區的第乙個資料元素是有序的;

2.從以上例子可以看出,若對n個數進行排序,需要進行(n-1)趟。

2.**:

#includeusing namespace std;

void insertion_sort(int a, int len)

a[j] = temp; }}

int main();

insertion_sort(a, 6);

for (int i = 0; i < 6; i++)

return 0;

}

3.時間複雜度分析:若將待排序的資料元素按從小到大的順序排序,可分為最好情況和最壞情況討論。

(1).最好的情況:最好的情況就是待排序的資料已經排好序了,這時只需要進行(n-1)次比較操作。

(2).最壞的情況:最壞的情況就是待排序的資料序列是逆序的。此時需要進行的比較次數為n(n-1)/2次,賦值操作是比較操作的次數n(n-1)/2+(n-1)次。平均來說插入排序演算法的時間複雜度為o(n^2)。

注:插入排序不適合對於資料量比較大的排序應用

演算法之插入排序 C語言

插入排序演算法 按照演算法導論講解,該演算法適合少量資料的排序,時間複雜度o n2 如下 include define maxsize 10 int insert sort int array 插入排序 int insert sort int array else tmp index if tmp ...

C語言 排序之插入排序

插入排序 英語 insertion sort 是一種簡單直觀的排序演算法。它的工作原理是通過構建有序序列,對於未排序資料,在已排序序列中從後向前掃瞄,找到相應位置並插入。插入排序在實現上,通常採用in place排序,因而在從後向前掃瞄過程中,需要反覆把已排序元素逐步向後挪位,為最新元素提供插入空間...

c 排序演算法之插入排序

今天在寫pat乙級題的時候第一次聽說插入排序 我一直都是孤陋寡聞,大家諒解 插入排序通過對未排序的資料逐個插入合適的位置而完成排序的工作。思路簡單,使用的也比較多 插入排序演算法通過比較和插入來實現排序,其排序流程如下 1 first,對陣列的前兩個資料進行從小到大排序。2 接著將第三個資料與排好的...