資料結構 插入排序

2021-07-11 05:06:21 字數 1177 閱讀 3156

演算法中經常會用到各種各樣的演算法,比較簡答的思想就是氣泡排序,一般剛開始程式設計時遇到排序問題時,會很容易想到冒泡排,氣泡排序是通過兩輛比較數值,從而將數字移動到開始或者末尾的位置,反覆重複這個過程從而就達到了排序的目的。其時間複雜度大概是ο(n2)。還有一種比較常用的插入排序,其思想與氣泡排序比較類似。下面來逐步講解插入排序的思想:

1、首先考慮到將乙個數字插入到乙個有序表中,這裡有序表代表可以是非增序列,也可以是非減序列。插入完成後,該有序表仍然保持原有的特性。

對於這種情況下,實現的c++**是:

/**

@para: sorted_array: 有序表

element: 需要插入的元素

length: 有序表在沒有插入元素時的原始長度

@function: 實現插入排序

*/templatevoid insert(t *sorted_array, const t &element, int length)

sorted_array[cnt + 1] = element;

}

2、緊接著我們考慮迭代的過程,對於乙個長度為length的序列,從分別對其部分長度為1,2,......,一直到length的序列進行插入,插入的數字即該長度範圍外的第乙個數字,即對序列sorted_array[0]開始插入數字sorted_array[1],sorted_array[2]。。。。

最後得到的序列保持了在第一步進行過程中的有序性,因此最後得到的序列是有序的,實現過程是:

templatevoid insertorder(t *sorted_array, int length)

sorted_array[cnt + 1] = element;

}templatevoid insertorder(t *sorted_array, int length)

insertorder(sorted_array, length);

for (int i = 0; i

4、最後我們來看看插入排序的每次插入的過程:

資料結構 插入排序

一 直接插入排序 1 直接插入排序的演算法思想 r i 的鍵值ki與r 0 r i 1 的鍵值依次比較 從後往前比 找到r i 應插入的位置,並把從該位置開始的記錄後移乙個位置,把r i 插入到找到的插入位置,完成一趟直接排序 重複選r i 1 r n 完成上述操作,直到排序完畢 注 為什麼要從後往...

資料結構 插入排序

插入排序的基本思想是 每步將乙個待排序的物件,按其關鍵字大小,插入到前面已經排好序的一組物件的適當位置上,直到物件全部插入為止。簡言之,邊插入邊排序,保證子串行中隨時都是排好序的。新元素插入到 在已形成的有序表中線性查詢,並在適當位置插入,把原來位置上的元素向後順移。關鍵字序列t 13,6,3,31...

資料結構 插入排序

基本概念 排序 使記錄按關鍵字遞增或遞減排列 關鍵字重複不影響記錄順序的排序稱為穩定排序 影響記錄順序的稱為不穩定排序。僅在記憶體中進行的排序稱為內部排序 涉及內外存交換的排序稱為外部排序。內部排序 插入排序 選擇排序 交換排序 歸併排序 分配排序。排序演算法的步驟 1 比較兩個關鍵字大小 2 改變...