排序 插入排序的實現

2021-08-11 14:23:06 字數 978 閱讀 8830

插入排序類似於我們玩撲克牌,如果想要讓我們手中的牌有序,那麼當我們從牌堆中抽出一張牌放入自己手中的牌組內時,需要把這張牌和手中最大的牌開始向前比較,直到找到乙個大於前面的牌小於後面一張牌的情況下插入即可。

在網上看到此**,特別能說明插入排序的思想,因此把它放在這裡。

插入排序的實現我們可以先從單趟排序入手,假設我們需要插入的數字是end,則我們需要向前插入,此時我們需要乙個迴圈從後向前來找到插入位置,找插入位置的同時把遍歷過的結點向後移動,即我們插入位置的結點永遠為空,方便我們進行插入。最後在從1到len進行迴圈即可完成插入排序。

寫乙個外迴圈,從1到整個排序陣列的最後乙個len

定義end為我們排序的有序區間最後乙個數,此時注意邊界情況。

內迴圈是乙個從i到1的乙個迴圈,如果插入結點後的乙個元素大於我們要插入的結點,則把此結點向後移動,如上圖步驟2與步驟3.

找到插入結點後把end賦值給插入結點即可。

#include 

#include

using

namespace

std;

void insertsort(int* a,int len)

//插牌的過程

a[j] = end;

}}int main()

; int len = sizeof(arr) / sizeof(arr[0]);

insertsort(arr, len);

for (size_t i = 0; i < len; i++)

cout

<< arr[i] << endl;

return

0;}

插入排序實現

插入排序 public class insertionsort for int i arr 思路 外層迴圈用來從無序區域中取值,起始位置是下標1,把下標0到下標0當作已經有序的區域,把要取的值用臨時變數val存起來,如果這個值正好應該排在有序區域的最後,那麼插入位置就是它原來的下標,如果這個值比有序...

插入排序的實現

1.時間複雜度 n 2,但是少量資料的情況下比歸併排序要好,因為歸併排序的常數因子很大!2.原址排序 void insert sort int date,int n 思想 設想一下,桌子上有一堆揹著的牌 類似於乙個等待排序的陣列 然後呢,你開始拿到第一張牌並置入你的左手,你要記住,你的左手中的牌永遠...

排序 插入排序(java實現)

插入排序 1.對於給定的一組記錄,初始時假定第乙個記錄是乙個有序的序列,其餘記錄為無序序列。2.然後從第二條記錄開始,按照記錄的大小依次將當前的記錄插入到剛開始的那個有序序列中去,直到最後乙個記錄插入到有序序列中。以陣列為例 第一次的以12為有序記錄 24 19 35 28 33 39 41 第二次...