排序演算法C 實現之插入排序詳解

2021-10-01 20:59:39 字數 1166 閱讀 8205

將一組無序陣列變為有序

將陣列分為兩部分,有序的部分和無序的部分。每次從無序的部分中選擇乙個元素,將該元素插入有序部分,多次插入後,有序部分的元素越來越多,無序部分的元素越來越少,直到無序部分元素為0。

可以看見,每次迭代時,有序部分元素數量加一,無序部分元素數量減一。若有n個元素,那麼要迭代n次。

無序部分減少的那個元素可以按照從左到右的順序乙個個取。

有序部分增加的那個元素需要從右往左乙個個比較確定位置,也就是有序向量的插入方法。

實際上對於某個無序陣列,可以看做由有序部分+無序部分組成。剛看到這個陣列時,從左到右,有序部分元素數量為0,無序部分元素數量為n。

將陣列分為有序和無序兩部分,通過迭代,不斷將無序部分的首元素插入有序部分中。

using system;

namespace insertionsort

program ps = new program();

ps.insertsort(a);

console.writeline("排序結果:");

foreach (int a in a)

console.readkey();

}public void insertsort(int a)

和a=,按照插入演算法的執行順序,我們發現其很快就能完成整個演算法。

【元素完全逆序或混亂】例如,對a=,按照插入演算法的執行順序,在插入階段會發生很多次比較,耗費大量的時間,這是我們可以改進的地方,實際上也就是改進有序向量的插入演算法。

【有多個相同的元素】排序前後相同元素的相對次序不會改變

public void insertsort2(int a)

a[j + 1] = temp;}}

//二分查詢演算法

public int binsearch(int a,int a, int lo,int hi)

else

}return lo;

}

氣泡排序法和插入排序法的比較

[1]鄧俊輝.資料結構(c++語言版)第三版[m]

排序演算法c#實現之氣泡排序詳解

排序演算法c#實現之歸併排序詳解

排序演算法c#實現之選擇排序詳解

C 實現排序演算法之插入排序

include include include using namespace std void print int arr,int len cout endl void insertsort int arr,int len arr j 1 basic void main int len sizeo...

插入排序演算法之C 實現

插入排序,顧名思義其實現形式是插入.在整個大小不一的佇列中,第一次 從乙個元素開始,將後面相鄰的元素 第二個元素 提取出來,放在乙個變數中暫時儲存,然後和第二個元素前面的那個元素 第乙個元素 做比較,如果比它大,當然就不變動位置 但如果比它小,就將前面那個元素移動到第二個元素的位置,然後將變數的元素...

排序演算法 插入排序 C 實現

插入排序的基本思想是每次將乙個待排序的記錄,按其關鍵字大小插入到前面已經排好序的子檔案中的適當位置,直到全部記錄插入完成為止。常見的插入排序有插入排序 insertion sort 希爾排序 shell sort 二叉查詢樹排序 tree sort 圖書館排序 library sort patien...