二分折半查詢,效率比較高,每次都從範圍最中間開始比較,然後逐漸縮小範圍,二分折半查詢法的要求就是該序列在使用之前一定是要有序的,不然二分折半查詢對其沒有作用。
先分析一下折半查詢
int a=;
//在這裡我們先定義乙個陣列
然後我們查詢乙個10這個數字,第一次比較的時候,由兩邊的位置來找到中間的位置然後和中間的進行比較,中間的位置是6,10比6大,所有在右邊的範圍裡面再找乙個中間的數進行比較,右邊從6開始尋找,因為位置5的那個數字已經比較過了再比較一次沒有意義,我們找到中間位置8,在該位置上的數就9,10還是比9大,然後我們在從右邊開始找,我們再通過上面尋找的方法找到中間位置9,正好10相等,返回該數的位置。
left right middle
第一次 0 11 5
第二次 6 11 8
第三次 7 11 9
下面是實現的**
public
class test01 ;
arrays.sort(a);
system.out.println(arrays.tostring(a));
system.out.println(binarysearch(a,6));
}public
static
intbinarysearch(int a,int searchnum)else
if(searchnum1;
}else
}return -1;
}}
二分 折半 查詢
折半查詢 又叫二分查詢,採用分治思想,適用於不經常變動且查詢頻繁的表 演算法思想 將n個元素 假設n個元素公升序 分為大致相同的兩部分,取data n 2 與目標元素m比較 若data n 2 m return n 2 若data n 2 m 則我們只要在data的左半部分繼續查詢 若data n ...
二分 折半 查詢
二分查詢 請對乙個有序陣列進行二分查詢 輸入乙個數看看該陣列是否存在此數,並且求出下 標,如果沒有就提示 沒有這個數 二分查詢演算法的思路 二分 折半 查詢條件 有序陣列。public class binarysearch 不考慮有重複元素的查詢。int index solutionsearch a...
C 二分 折半 查詢
首先,假設表中元素是按公升序排列,將表 中間位置記錄的關鍵字 與 查詢關鍵字 進行比較,如果兩者相等,則查詢成功。否則,利用 中間位置的記錄 將表分成 前後 兩個子表 1 如果 查詢關鍵字 2 如果 查詢關鍵字 中間關鍵字 後子表查詢。重複以上過程,直到查詢成功。include include us...