與選擇排序,氣泡排序一樣,插入排序也是常規的排序法之一,
插入排序的思想主要放在"插入"二字,主要就是從待排序列中取第乙個待排元素,然後與其前面已排序列的元素比較,比較成功(或大或小),那麼就把這個已排元素往後挪乙個位置,空出來的位置就是插入的位置,依次迴圈.下邊來看個示意圖:
要排的序列為 int array = ;排序為公升序排序.
(紅色代表已排序列,黑色代表待排序列,綠色代表待排序列中的第乙個元素)
第一次:32前邊有序序列沒有比32大的元素,不需移動 ->
第二次:2比12小,12,32往後移一位 -> ->
2插入空位 ->
第三次:4比12小,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....