將一組無序陣列變為有序
將陣列分為兩部分,有序的部分和無序的部分。每次從無序的部分中選擇乙個元素,將該元素插入有序部分,多次插入後,有序部分的元素越來越多,無序部分的元素越來越少,直到無序部分元素為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...