Java實現二分插入排序

2021-06-23 03:52:54 字數 1418 閱讀 3633

/**  * 「二分插入排序」,利用二分查詢優化插入排序中的定位部分。   

* 《演算法導論》,習題2.3-6 

*  observe that the while loop of lines 5 - 7 of the insertion-sort procedure in  

* section 2.1 uses a linear search to scan (backward) through the sorted  

* subarray a[1  j - 1]. can we use a binary search (see exercise 2.3-5)  

* instead to improve the overall worst-case running time of insertion sort to  

*@author lihzh(苦逼coder)  

*/public

class insertsortwithbinarysearch ;   

public

static

void main(string args)   

input[index] = key;           

}           

/*          

* 複雜度分析:          

* 最佳情況,即都已經排好序,則無需右移,此時時間複雜度為:θ(n lg n)          

* 最差情況,全部逆序,此時複雜度為θ(n^2)          

* 所以針對2.3-6問題,無法將最差情況的複雜度提公升到θ(n lg n)。          

*///列印陣列         

printarray();       

}            

/**      

* 二分查詢      

* @param input 給定已排序的待查陣列      

* @param target 查詢目標      

* @param from 當前查詢的範圍起點      

* @param to 當前查詢的返回終點      

* @return 返回目標在陣列中,按順序應在的位置      

*/private

static

int binarysearch(int input, int target, int from, int to)   

else

}   

else

else

}           

}            

private

static

void printarray()   

}    

}

二分插入排序

基本思想 1.取arr 1 為關鍵字key,將key插入前面已拍好的序列中。2.取arr 2 為關鍵字key,將key插入前面已拍好的序列中。3.取arr n 1 為關鍵字key,將key插入前面已拍好的序列中。include include define n 10 void binsertsort...

二分插入排序

include 二分插入法排序 二分排序的時間複雜度是o n logn 空間複雜度o 1 是穩定排序 void binary insert sort int a,int len else 如果當前元素比中間元素大,當前元素要插入到中間元素的右側 for j i 1 j high j 元素後移 a h...

二分插入排序

一 折半插入排序 二分插入排序 二 演算法原理 演算法的基本過程 1 計算 0 i 1 的中間點,用 i 索引處的元素與中間值進行比較,如果 i 索引處的元素大,說明要插入的這個元素應該在中間值和剛加入i索引之間,反之,就是在剛開始的位置 到中間值的位置,這樣很簡單的完成了折半 2 在相應的半個範圍...