Java 二分查詢法

2021-09-20 15:34:14 字數 924 閱讀 3067

二分查詢(binary search),也稱對數搜尋(logarithmic search),是一種在 有序陣列 中查詢某一特定元素的搜尋演算法。

下面是二分查詢的程式**

public

static

intbinary

(int

arr,

int data)

else

if(arr[mid]

< data)

else

}return-1

;}

分析以上**是否存在問題?**會出現 bug ?

對於上面的方法而言,問題出在第 6 行**處:

mid =

(min + max)/2

;

在 min 和 max 很大的時候,會出現溢位的情況,從而導致陣列訪問出錯。

改進辦法:將加法變成減法,**如下:

public

static

intbinary

(int

arr,

int data)

else

if(arr[mid]

< data)

else

}return-1

;}

官方的二分搜尋法的實現寫法:使用 位運算,**如下:

public

static

intbinary

(int

arr,

int data)

else

if(arr[mid]

< data)

else

}return-1

;}

java二分查詢法

二分查詢又稱折半查詢,它是一種效率較高的查詢方法。二分查詢要求 1.必須採用順序儲存結構 2.必須是有序的陣列 首先先看看普通的搜尋方法 普通方法的查詢 param arr param value return public static int search int arr,int value r...

二分查詢法 java

二分查詢 要求 必須採用順序儲存結構 必須按關鍵字大小有序排列。實現方法分為迴圈和遞迴兩種 迴圈法 迴圈法 要求 必須採用順序儲存結構 必須按關鍵字大小有序排列 public static int binarysearch int a,int key else if key a middle els...

java陣列二分查詢法

1.新建halffind類,在main方法中,呼叫二分查詢法。public class halffind 折半查詢對於陣列的是有序數列 system.out.println halfserach a,7 system.out.println halfserach a,2 折半查詢 public st...