C C 七大排序演算法 之 「插入排序」

2021-10-07 16:24:02 字數 1439 閱讀 3171

排序:即將一組混亂的資料按從小到大或者從大到小的順序進行有序的排列出來。

插入排序演算法**:

思路解答:

它的工作原理是通過構建有序序列,對於未排序資料,在已排序序列中從後向前掃瞄,找到相應位置並插入。插入排序在實現上,通常採用 in-place 排序(即只需用到 o(1)的額外空間的排序),因而在從後向前掃瞄過程中,需要反覆把已排序元素逐步向後挪位,為最新元素提供插入空間。

具體演算法描述如下:

從第乙個元素開始,該元素可以認為已經被排序;

取出下乙個元素,在已經排序的元素序列中從後向前掃瞄;

如果該元素(已排序)大於新元素,將該元素移到下一位置;

重複步驟 3,直到找到已排序的元素小於或者等於新元素的位置;

將新元素插入到該位置;

重複步驟 2~5。

時間複雜度:o(n2)

**實現:

#include

#include

using

namespace std;

// 插入排序

void

insertsort

(int

*beauties,

int len)

int index;

// 儲存待比較的的索引

int ret;

// 儲存待插入資料

for(

int i =

1; i < len; i++

)// 當索引為-1或者索引對應的值要比ret小時,就可以退出迴圈,ret就可以插入到索引加一的位置了

beauties[index +1]

= ret;}}

intmain

(void);

// 獲取陣列的長度

int len =

sizeof

(beauties)

/sizeof

(beauties[0]

);insertsort

(beauties, len)

;for

(int i =

0; i < len; i++

) cout << endl;

system

("pause");

return0;

}

執行截圖:

七大排序演算法之插入排序

常見的排序演算法有 插入排序,希爾排序,氣泡排序,選擇排序,快速排序,歸併排序,堆排序。此篇主要講述插入排序,演算法步驟 1 將待排序序列第乙個元素看做是乙個有序序列,把第二個元素到最後乙個元素當成未排序系列 2 從頭到尾依次掃瞄未排序序列,將掃瞄到的每乙個元素插入到有序序列的適當位置 如果待插入的...

七大排序演算法 插入排序及其優化

思路 初步 public static void insertsort int arr else arr j 1 tmp 將tmp放到 小於或等於tmp這個元素的後乙個位置 public static void swap int arr,int i,int j 複雜度分析 優化 二分查詢該元素要插入...

C C 七大排序演算法 之 「氣泡排序」

排序 即將一組混亂的資料按從小到大或者從大到小的順序進行有序的排列出來。氣泡排序演算法 思路解答 從第乙個資料開始,與其後乙個資料進行比較,如果後面的資料比他小,則它兩互相交換位置 然後再從第二個資料開始,與其後乙個資料進行比交,如果後面的資料比他小,則它兩互相交換位置 然後再從第三個資料開始 如果...