演算法入門 二分查詢演算法

2022-01-17 00:31:57 字數 2371 閱讀 6096

演算法前提:

==>>  

必須採用順序儲存結構

==>> 必須按關鍵字大小有序排列

演算法思路是:

1.每次去陣列中的中間值與被查詢的值進行比較

2.如果中間值小於被查詢的值,則選擇中間值右邊的陣列,重複1,直到發現與被查詢的值相等的陣列元素或返回某個值,表示被查詢的值在陣列中不存在。

3.如果中間值大於被查詢的值,則選擇中間值左邊的陣列,重複1,直到發現與被查詢的值相等的陣列元素或返回某個值,表示被查詢的值在陣列中不存在。

下面是我個人的**實現:

1

/**2* 3

*/4package

com.b510.algorithms;56

/**7

* 二分查詢演算法是在已經排序好的陣列中查詢出某個值8*

@author

hongten([email protected])

9* @date 2013-6-7

10*/

11public

class

parttwodichotomy ;

15int x = 21;

16int index =dichotomy(a, x);

17 string result = index == -1 ? "被查詢的值[" + x + "]不在陣列中!" : "被查詢的值[" + x + "]在陣列中,且下標為:" +index;

18system.out.println(result);19}

2021

/**22

* 二分法查詢演算法

23*

24*

@parama25

* 已經排序好的陣列

26*

@paramx27

* 需要查詢的值

28*

@return

-1表示x不在陣列a中,否則返回陣列a的n下標,其中a[n] == x29

*/30

public

static

int dichotomy(int a, int

x) else

4344

if (a[middle] 4748

if (a[middle] >x) 51}

52return -1;53}

54}5556

/**57

* 列印陣列資訊

58*

59*

@parama60

* @param

index

61* 從陣列的index地方開始

62*

@param

last

63* 到陣列last地方結束

64*/

65public

static

void print(int a, int index, int

last)

71 system.out.println("需要繼續進行查詢的陣列為:" +buffer);72}

73}74 }

執行效果:

需要繼續進行查詢的陣列為:1   3   4   5   6   8   9   13   14   17   21需要繼續進行查詢的陣列為:9   13   14   17   21需要繼續進行查詢的陣列為:17   21需要繼續進行查詢的陣列為:21被查詢的值[21]在陣列中,且下標為:10

需要繼續進行查詢的陣列為:1   3   4   5   6   8   9   13   14   17   21需要繼續進行查詢的陣列為:9   13   14   17   21需要繼續進行查詢的陣列為:17   21需要繼續進行查詢的陣列為:21被查詢的值[212]不在陣列中!

需要繼續進行查詢的陣列為:1   3   4   5   6   8   9   13   14   17   21需要繼續進行查詢的陣列為:9   13   14   17   21需要繼續進行查詢的陣列為:9   13需要繼續進行查詢的陣列為:13被查詢的值[13]在陣列中,且下標為:7

需要繼續進行查詢的陣列為:1   3   4   5   6   8   9   13   14   17   21需要繼續進行查詢的陣列為:1   3   4   5   6需要繼續進行查詢的陣列為:1   3被查詢的值[1]在陣列中,且下標為:0

需要繼續進行查詢的陣列為:1   3   4   5   6   8   9   13   14   17   21被查詢的值[8]在陣列中,且下標為:5

演算法 二分查詢演算法

思想 二分搜尋主要解決的問題是確定排序後的陣列x 0,n 1 中是否包含目標元素target。二分搜尋通過持續跟蹤陣列中包含元素target的範圍 如果target存在陣列中的話 來解決問題。一開始,這個範圍是整個陣列,然後通過將target與陣列中的中間項進行比較並拋棄一半的範圍來縮小範圍。該過程...

二分查詢演算法

1.第一步查詢中間元素,即5,由於5 6,則6必然在5之後的陣列元素中,那麼就在中查詢,2.尋找的中位數,為7,7 6,則6應該在7左邊的陣列元素中,那麼只剩下6,即找到了。二分查詢演算法就是不斷將陣列進行對半分割,每次拿中間元素和goal進行比較。include iostream using na...

二分查詢演算法

二分查詢又稱折半查詢,優點是比較次數少,查詢速度快,平均效能好 其缺點是要求待查表為有序表,且插入刪除困難。因此,折半查詢方法適用於不經常變動而查詢頻繁的有序列表。首先,假設表中元素是按公升序排列,將表中間位置記錄的關鍵字與查詢關鍵字比較,如果兩者相等,則查詢成功 否則利用中間位置記錄將表分成前 後...