排序演算法 二分插入排序(折半排序)演算法原理

2021-10-07 06:28:35 字數 557 閱讀 1054

對於插入排序,如果比較操作的代價比交換操作大的話,可以採用二分查詢法來減少比較操作的次數,我們稱為二分插入排序

在直接插入排序的基礎上,利用二分(折半)查詢演算法決策出當前元素所要插入的位置。

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...