常見排序演算法之二分插入排序演算法

2021-10-03 13:54:19 字數 852 閱讀 2992

1.演算法思路

是在插入第i個元素時(i前面的元素必定是有序的),對前面的0~i-1元素進行折半,先跟他們中間的那個元素比,

如果小,則對前半再進行折半,否則對後半進行折半,

直到left>right,然後再把第i個元素前1位與目標位置之間的所有元素後移,

再把第i個元素放在目標位置上。

2.特點分析

二分法直接插入排序演算法是插入排序的公升級版本,

但是時間複雜度和直接插入演算法一樣都是o(n²)

那麼二分法為什麼是插入排序的公升級版本呢

因為直接插入排序的操作步驟是很多的

二分插入排序能夠減少排序的步驟

和插入排序一樣,適用於小規模資料或者有序性比較高的陣列

3.思路分析

4.**實現

public class binaryinsertsort ;

sort(a); }

/* 思路: 主要分兩步吧,也就是基本的插入排序思路

1. 找到啊a[i]應該插入的位置

2.把大於a[i]的往後移動一位,把a[i]插入應當位置

*/private static void sort(int a) else

}//把大於a[i]的向後移動一位

for(int j = i -1;j >= left;j --)

//插入a[i]

if (left != i)

} system.out.println(arrays.tostring(a));

}

常見排序演算法 折半 二分 插入排序

其實是主要在二分查詢演算法的基礎上執行插入操作 接下來我結合演算法的實際例子來解釋 初始陣列 10 21 7 13 14 3 12 對其進行由小到大進行排序 先解釋一下2分法,比如在乙個有序陣列中,我要查詢數字2在其中的位子,首先先比較2與陣列中間數字3的大小,發現2小於3,則2肯定在數字3的左邊陣...

排序之二分插入排序

作為乙個穩定的排序演算法,插入排序很重要,大多數程式設計師都可以很輕鬆的寫出插入排序!先看一下插入排序的 void sort insert int a,int n a j 1 x i 如果目標是把n個元素的序列公升序排列,那麼採用插入排序存在最好情況和最壞情況。最好情況就是,序列已經是公升序排列了,...

排序之二分插入排序

二分插入排序 演算法思想簡單描述 通過構造二分插入函式,在插入第i個元素時,對前面的0 i 1元素進行折半,先跟他們 中間的那個元素比,如果小,則對前半再進行折半,否則對後半 進行折半,直到left right,然後再把第i個元素前1位與目標位置之間 的所有元素後移,再把第i個元素放在目標位置上。i...