【java】,
分享于 点击 37394 次 点评:35
【java】,
package test923;
/**
* 二分查找又称折半查找,它是一种效率较高的查找方法。
*【二分查找要求】:1.必须采用顺序存储结构 2.必须按关键字大小有序排列。
* @author kemp
*/
public class BinarySearchTest {
public static void main(String[] args) {
int[] array = new int[] {1, 3, 5, 7, 8, 9};
int temp = binarySearch(array, 0);
System.out.println(temp);
System.out.println(binarySearch(array,3,0,array.length-1));
}
/**
*二分查找特定整数在整型数组中的位置(递归)
*@param dataset
*@param data
*@param beginIndex
*@param endIndex
*@return index
*/
private static int binarySearch(int[] dataset,int data,int beginIndex,int endIndex) {
int middleIndex = (beginIndex + endIndex)/2;
if (data <dataset[beginIndex]||data>dataset[endIndex]||beginIndex>endIndex) {
return -1;
}
if (data < dataset[middleIndex]) {
//遍历左边
return binarySearch(dataset,data,beginIndex,middleIndex-1);
}else if (data < dataset[middleIndex]) {
//遍历右边
return binarySearch(dataset,data,beginIndex + 1,middleIndex);
}else {
return middleIndex;
}
}
/**
* * 二分查找算法 * *
*
* @param srcArray
* 有序数组 *
* @param des
* 查找元素 *
* @return des的数组下标,没找到返回-1
*/
public static int binarySearch(int[] arr,int param) {
if (arr.length == 0) {
return -1;
}
int startIndex = 0;
int endIndex = arr.length - 1;
while (startIndex <= endIndex) {
int middle = (startIndex + endIndex) / 2;
if (param == arr[middle ]) {
return middle;
}else if (param < arr[middle ]) {
endIndex = middle - 1;
}else {
startIndex = middle + 1;
}
}
return -1;
}
}
运行结果:
-1
0
相关文章
- 暂无相关文章
用户点评