對於插入排序,如果比較操作的代價比交換操作大的話,可以採用二分查詢法來減少比較操作的次數,我們稱為二分插入排序
在直接插入排序的基礎上,利用二分(折半)查詢演算法決策出當前元素所要插入的位置。
1.找到中間元素,如果中間元素比當前元素大,則當前元素要插入到中間元素的左側;
2.否則,中間元素比當前元素小,則當前元素要插入到中間元素的右側。
3.找到當前元素的插入位置 i 之後,把 i 和 high 之間的元素從後往前依次後移乙個位置,然後再把當前元素放入位置 i。
private
static
void
insertsort2
(int
a)else
}for
(int j=i;j>=high+
1;j--
) a[high+1]
=temp;
}}
常見排序演算法 折半 二分 插入排序
其實是主要在二分查詢演算法的基礎上執行插入操作 接下來我結合演算法的實際例子來解釋 初始陣列 10 21 7 13 14 3 12 對其進行由小到大進行排序 先解釋一下2分法,比如在乙個有序陣列中,我要查詢數字2在其中的位子,首先先比較2與陣列中間數字3的大小,發現2小於3,則2肯定在數字3的左邊陣...
插入排序 簡單插入排序 二分插入排序
1 假設我們手裡的數字是一堆亂序撲克牌,我們想把它整理成從小到大的排序,會怎麼辦呢,我們會從左往右挨個將牌抽出來插到它合適的位置,這樣一輪之後,就變成從小到大的順序了。2 程式上怎麼實現,從第二位開始,逐個將後乙個數和它之前所有的資料進行比較,尋找這個數最合適的插入位置,將其插入空隙,後面的值依次會...
二分插入排序
基本思想 1.取arr 1 為關鍵字key,將key插入前面已拍好的序列中。2.取arr 2 為關鍵字key,將key插入前面已拍好的序列中。3.取arr n 1 為關鍵字key,將key插入前面已拍好的序列中。include include define n 10 void binsertsort...