資料結構之 插入排序

2021-08-26 05:04:37 字數 696 閱讀 4265

包括:直接插入排序,二分插入排序(又稱折半插入排序),鍊錶插入排序,

希爾排序(又稱縮小增量排序)。

假定這個陣列的序是排好的,然後從頭往後,如果有數比當前外層元素的值大,則將這個數的位置往後挪,直到當前外層元素的值大於或等於它前面的位置為止.這具演算法在排完前k個數之後,可以保證a[1…k]是區域性有序的,保證了插入過程的正確性.

一般來說,插入排序都採用in-place在陣列上實現。具體演算法描述如下:

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

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

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

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

5. 將新元素插入到下一位置中

6. 重複步驟2

如果比較操作的代價比交換操作大的話,可以採用

二分查詢法來減少比較操作的數目。該演算法可以認為是插入排序的乙個變種,稱為二分查詢排序。

#include int array = ; static void insert_sort(int array, int len); static void insert_sort(int array, int len) array[i+1] = key; } } int main(int argc, char *argv)

reference to

資料結構之插入排序 折半插入排序

排序思路 通過折半查詢的方式找到合適的插入位置再插入。演算法實現 public class biinsertsort else 插入點在 mid 1,right left mid 1 直到找到合適的位置 left或right 1 接下來就將left right 1後的元素後移 for int j i...

資料結構之插入排序

插入排序有,直接插入排序 折半插入排序 2 路插入排序和表排序。如果了解了這些排序的思路,那麼 也就容易理解了。直接插入排序思路是 把第乙個當做已排好序的,直接從第二個開始記為當前資料 當前資料需要儲存到a 0 把a 0 當做乙個哨子 然後用當前資料跟前面的資料比下去,大於當前資料的數都往後移一位。...

資料結構之 插入排序

一組有序的陣列,我們向裡邊新增乙個新的資料後,如何保持資料有序呢?首先,這是乙個動態排序過程,動態向有序集合中新增資料,通過不斷的插入資料保持資料的有序性,於是就有了插入排序。我們將陣列中的資料分為兩個區間,已排序區間和未排序區間。初始已排序區間只有乙個元素,就是陣列的第乙個元素。插入演算法的核心思...