排序演算法之 插入排序

2021-09-22 10:00:05 字數 1270 閱讀 5431

與選擇排序,氣泡排序一樣,插入排序也是常規的排序法之一,

插入排序的思想主要放在"插入"二字,主要就是從待排序列中取第乙個待排元素,然後與其前面已排序列的元素比較,比較成功(或大或小),那麼就把這個已排元素往後挪乙個位置,空出來的位置就是插入的位置,依次迴圈.下邊來看個示意圖:

要排的序列為 int array = ;排序為公升序排序.

(紅色代表已排序列,黑色代表待排序列,綠色代表待排序列中的第乙個元素)

第一次:32前邊有序序列沒有比32大的元素,不需移動 ->

第二次:212小,12,32往後移一位 -> ->

2插入空位 ->

第三次:412小,12,32往後移一位 -> ->

4插入空位->

.........

第n次:

基本思想已經說完,需要注意的是,待排序列的第乙個元素,需要存到臨時變數,否則已排序列往後移動時會覆蓋,下邊直接看**

#include #include #include #include using namespace std;

//需要注意的是,這裡的類模板需要放在標頭檔案中去實現,這裡為了直觀,直接放這裡了

template class sort

public:

//min2max為公升序\降序控制

static void insert(t* narray, int nlen, bool min2max = true)

}if(index != i)

}}};

int main(int argc, char* ar**)

; int len = sizeof(array)/sizeof(int);

sort::insert(array, len);

for(int i=0; i編譯執行

排序演算法之插入排序

排序演算法之插入排序 1 插入排序的思想 假設在乙個有序序列中 e 0 e i 1 這i 個元素已經排好序,則當要將第 i 1個元素 e 插入該序列時,只需將第 i 1個元素與從 e 0 開始到e i 1 元素進行比較,當發現第 j個元素 e j 在序列中應在 e 前,且 e j 1 應在e 後時,...

排序演算法之插入排序

排序演算法之插入排序 1 插入排序的思想 假設在乙個有序序列中 e 0 e i 1 這i 個元素已經排好序,則當要將第 i 1個元素 e 插入該序列時,只需將第 i 1個元素與從 e 0 開始到e i 1 元素進行比較,當發現第 j個元素 e j 在序列中應在 e 前,且 e j 1 應在e 後時,...

排序演算法之插入排序

本節主要分析插入排序演算法的直接插入排序和希爾 shell 排序 又稱縮小增量排序 1.直接插入排序 該排序是最簡單的排序方法,其基本思想是 假設待排序的記錄存放在陣列r 1.n 中。初始時,r 1 自成1個有序區,無序區為r 2.n 從i 2起直至i n為止,依次將r i 插入當前的有序區r 1....