問題描述
又叫折半查詢,要求待查詢的序列有序。每次取中間位置的值與待查關鍵字比較,如果中間位置的值比待查關鍵字大,則在前半部分迴圈這個查詢的過程,如果中間位置的值比待查關鍵字小,則在後半部分迴圈這個查詢的過程。直到查詢到了為止,否則序列中沒有待查的關鍵字。
**
package fenzi;
public class erfenchazhao ;
system.out.println(bisearch(arrays,2));
system.out.println(sort(arrays,2,0,6));
int arrays2 = ;
system.out.println(bisearch_qian(arrays2,2));
system.out.println(bisearch_hou(arrays2,2));
} //1.非遞迴**
public static int bisearch(int array,int a)else if(array[mid]array[mid])else
}return -1;
}// 查詢第乙個元素出現的位置(元素允許重複)
public static int bisearch_qian(int array,int a){
int n=array.length;
int low=0;
int hi=n-1;
int mid=0;
while(low執行結果
3324
分治法 二分搜尋
二分搜尋技術是利用分治法思想的的典型例子 問題描述 給定已經排好序的n個元素a 0 n 1 要在這n個元素中找出乙個特定元素x的下標 首先比較容易想到的是遍歷這個n個元素,依次尋找,這樣做的話,最壞情況下需要做n次比較,時間複雜度為o n 這種方法沒有很好的利用排序這個性質。其次就是二分搜尋技術,二...
分治法 二分搜尋BinarySearch
問題描述 給定乙個數字,再給n個數字,要從這n個數找出這個給定的數字,最壞的情況,如果乙個乙個找,要猜n次才能成功。其實我們沒有必要乙個乙個猜 因為這些數字是有限的而且是有序的 我們給它們排個序 這是乙個典型的二分搜尋問題。我們可以用折半查詢的策略,每次和中間的元素比較,如果比中間的元素小,那麼要查...
分治法 二分查詢
1 首先二分查詢滿足分治法的四個條件 1 原問題的解可以通過分解為若干個小的問題來解決 將原陣列序列可分解為兩個子串行 2 小的問題的解決方法和原問題的解決方法大致相似 都是確定乙個序列的上界和下界然後求得mid進行比較 3 小問題的解可以通過合併從而得到原問題的解 在子串行中可以更容易得到解從而r...