c 氣泡排序 C C 基礎之插入排序

2021-10-17 08:03:35 字數 1251 閱讀 9716

前兩篇跟大家講了c/c++基礎陣列排序的選擇排序和氣泡排序,現在再給大家分享一下插入排序演算法:

其實插入排序跟我們軍訓排隊一樣的,軍訓排隊一般是按各人身高排的,個矮的站前面,個高的站後面:

他的操作是:將乙個數插入到其他已經有序的陣列中適當的位置(按一定規則)比如排隊,他就需要站在乙個比他矮的人後面但是比他高的人前面的位置,然後為了給他挪出來乙個位置,他後面的人是不是都應該要挪開乙個位置呢?

還是假設我們有乙個陣列,我們要怎麼做呢?

如上圖,我首先取陣列第乙個(50)組成乙個現有佇列,然後逐一再從原始序列中取出資料插入到現有佇列中適當位置,這樣只需要(陣列長度-1)次迴圈就可以完成工作。

我們看下**怎麼實現:

看下執行結果,確認下有沒有問題:

ok,沒有問題。

其實插入排序的核心就是:將元素插入已有序列,逐一跟現有序列元素比較,然後滿足比較條件的就換位置,知道找到自己合適的位置。

最後奉上源**:

#include

#include

using namespace std;

int main()

int arr[7] = ;

//從第二個元素開始去插入,所以從i=1開始

for (int i = 1; i < sizeof(arr)/sizeof(int); i++)

//這個迴圈就是我在圖示中表示的過程,最大的從前往後滾

for (int j = i; j >0; j--)

if(arr[j]

int temp = arr[j];

arr[j] = arr[j-1];

arr[j-1] = temp ;

//我們來輸出一下看看排序成功沒

for (int i = 0; i < sizeof(arr)/sizeof(int); i++)

cout<

system("pause");

return 0 ;

氣泡排序,插入排序

前提 void x sort elementtype a,int n 大多數情況下,為簡單起見,討論從小大的整數排序 n是正整數 只討論基於比較的排序 有定義 只討論內部排序 穩定性 任意兩個相等的資料,排序前後的相對位置不發生改變 沒有一種排序是任何情況下 都表現最好的 氣泡排序 void bub...

氣泡排序 插入排序

學習思路 思路講解 實現 1 通過雙重迴圈,相鄰兩個資料做對比,通過位置交換使其變得有序 2 時間複雜度 分析 解釋 外部迴圈從0開始i 內部迴圈從0開始j,完整迴圈後會將本次最大值放入陣列最後,下次迴圈可忽略相應的尾部資料 length i 1 重複1 2步即可完成排序 實現 public cla...

排序 之 選擇排序,插入排序,氣泡排序

主要思想 1 插入排序 若只有乙個元素時看做有序,將第二個 第三個 第n個元素依次插入有序 公升序或降序 的序列中,將第n個元素插入後,整個序列為有序。2 氣泡排序 從第乙個元素開始,依次將其和其後的乙個元素做比較,若該元素大於 或小於 其後的元素,將兩個元素交換順序,一趟結束後,第n個元素為最大 ...