演算法 基礎篇 二分查詢

2021-12-30 00:28:56 字數 1048 閱讀 4463

二分查詢又稱折半查詢,優點是比較次數少,查詢速度快,平均效能好;其缺點是要求待查表為有序表,且插入刪除困難。因此,折半查詢方法適用於不經常變動而查詢頻繁的有序列表。

首先,假設表中元素是按公升序排列,將表中間位置記錄的關鍵字與查詢關鍵字比較,如果兩者相等,則查詢成功;否則利用中間位置記錄將表分成前、後兩個子表,如果中間位置記錄的關鍵字大於查詢關鍵字,則進一步查詢前一子表,否則進一步查詢後一子表。重複以上過程,直到找到滿足條件的記錄,使查詢成功,或直到子表不存在為止,此時查詢不成功。

由於此演算法理解起來簡單,就不多說什麼了。。

遞迴實現:

package hello.ant;

public class alogbinarysearch2 ;

int pos=binarysearch(array,0,array.length-1,8);

system.out.println(pos);

} static int binarysearch(int array,int begin,int end, int x) else else if(x

結果:mid==3

mid==5

5

非遞迴實現:

package hello.ant;

public class alogbinarysearch ;

int pos=binarysearch(array,7);

system.out.println(pos);

} static int binarysearch(int array, int x) else if(x

mid==3

mid==5

mid==44-1

演算法二分查詢演算法篇

困而學,學而知 什麼是二分查詢演算法呢?首先需要說明的是,只要在陣列有序的情況下,二分查詢才是有用。如果是乙個無序的陣列,二分查詢就沒有意義了。現在有1 100個數,當然是有序的,現在需要你猜乙個數。你每猜一次,我告訴你猜大了還是猜小了,那麼現在開始吧。現在有三種方案 從1按照順序猜 我們來看看這種...

演算法基礎 二分查詢函式 二分演算法

一 寫乙個函式binaryseach,在包含size個元素的 從小到大排序的int數a裡查詢元素p,如果找到,則返回元素下標,如果找不到,則返回 1。要求複雜度o log n int binarysearch int a,int size,int p return 1 複雜度o log n 二 寫乙...

演算法基礎 二分查詢

二分查詢主要是為了解決 在一堆數中找出指定的數 這類問題。要想二分查詢,這一堆數必須有以下特徵 至於是順序遞增還是遞減,是否存在相同的元素都不要緊。include include using namespace std int binarysearch int array,int low,int h...