插入排序(insertion sort)的基本思想是:每次將乙個待排序的記錄,按其關鍵字大小插入到前面已經排好序的子檔案中的適當位置,直到全部記錄插入完成為止。
插入排序步驟:
1.在有序序列中查詢插入點
2.從插入點開始向後移動資料(1、2可合併,邊查詢邊移動資料)
3.插入資料
插入排序根據查詢插入點方法不同分為:直接插入排序和二分插入排序。
時間複雜度:o(n^2)class insertsort
nums[j+1]=tmp;}}
};
查詢插入點時,使用二分查詢。
時間複雜度:查詢插入點需要θ(log i)比較;移動資料最多移動i+1次,最少2次。(查詢插入點開銷減少了,但是對沒有減少總開銷數量級)class binarysearchinsertsort
nums[j]=value;}}
int binarysearchinsertposition(vector
&nums,int length,int value)else
}return low; //返回low
}};
所以時間複雜度:還是o(n^2)
兩種插入排序是穩定的排序。
Insert sort 插入排序
入學c,開始熟悉gcc,g 熟悉演算法 2011 9 18 writen by qiya include include include const int size 10 void insert sort int a,int n j j 1 a j key int main for i 0 i s...
插入排序(InsertSort)
首先舉乙個和插入排序有關的例子 現在桌上有一副撲克,要求我們要有序的放在手上,所以我們就要在拿牌的同時,用拿起來的牌與手中已經存在的牌作比較,並且之後把這張牌放在合適的位置。所以,當我們面對的是一組資料的時候我們也可以使用這種思路來對這組資料進行排序。首先我們要拿出乙個數字來做為與其他資料進行比較的...
InsertSort 插入排序
插入排序的過程我們可以模擬 打牌時理牌 的過程,假如手中已有 3 7 9,又拿到一張 6,那麼我們怎麼找6的位置 呢?先與 9 比較,發現比9小,則互換位置 然後和 7 比,發現比 7 小,則互換位置,再和 3 比較,比 3 大,至此比較 結束,弄清楚了這個流程,就好寫了。for i 1 to le...