package sort;
/** * 折半插入排序:當序列是連續儲存時,對直接插入排序進行的改進:插入位置可以更快速找到
* 直接插入排序a[0]用作哨兵減少條件判斷,折半插入排序不需要哨兵a[0]位置存放實際元素
*/public
class
insertsort
// 統一後移,空出插入位置
for(j = i -
1; j >= high +
1; j--
)// 定位位置插入
a[high +1]
= temp;}}
}public
static
void
main
(string args)
; insertsort insertsort =
newinsertsort()
; insertsort.
sort
(a);
for(
int i =
0; i < a.length; i++)}
}
空間複雜度o(1
)折半插入排序只減少了比較元素的次數,移動次數和直接插入排序一樣。
時間複雜度:比較 + 移動
平均情況:平均比較 n *
log2
(n)+ 移動次數 =
o(n^2)
穩定性:穩定
插入排序 折半插入排序
折半插入排序 binary insertion sort 直接插入排序採用順序查詢法查詢當前記錄在已排好序的序列中插入位置,這個 查詢 操作可利用 折半查詢 來實 現,由此進行的插入排序稱之為折半插入排序 binary insertion sort 演算法思想 1 將待排序的記錄存放在陣列r 1.n...
插入排序 折半插入排序
折半插入排序是基於直接插入排序的優化。直接插入排序 將第i個元素插入時,通過折半查詢的方式,來查詢第i個元素合適的位置。當0 i 1 位置上的元素都已經排序ok,現需要插入第i個元素,設其值為temp 令low 0,high i,mid high low 2。那麼temp可能插入的位置是 low h...
1 2插入排序 折半插入排序
1.2插入排序 折半插入排序 binary insertion sort 一.評估 穩定的排序演算法 時間複雜度o n 2 移動次數 最小值n 1,最大值 n 2 n 1 2,平均值 n 2 4。與直接插入相比較少了比較的次數。二.思想 逐一插入,折半比較。r 0 作用 哨兵 監視哨 暫存器。voi...