java写二分查找代码 java实现二分查找

求一个java的二分查找的程序代码

//你那程序太难改了,每个方法都单职责啊

创新互联是一家专业提供洪山企业网站建设,专注与成都做网站、网站制作、H5页面制作、小程序制作等业务。10年已为洪山众多企业、政府机构等服务。创新互联专业的建站公司优惠进行中。

public class Test6 {

//二分查找

public static int findPos(int[] a,int key) {

int start=0;

int end=a.length-1;

int temp=0;

while(startend){

int mid=(start+end)/2;

if(keya[mid]){

start=mid+1;

temp=start;

}else if(keya[mid]){

end=mid-1;

temp=end;

}else {

return mid;

}

}

return temp;

}

public static void main(String[] args) {

int[]array={1,4,6,7,10,11,23,78};

System.out.println(findPos(array, 0));

}

}

二分查找的代码怎么写(其中2种)?

二分查找是一种在有序数组中查找指定元素的算法,它的基本思想是:每次将查找区间缩小一半,直到找到目标元素或者确定目标元素不存在为止。

下面是两种写法:

递归版本

def binary_search(array, target, low, high):

if low high:

return -1

mid = (low + high) // 2

if array[mid] == target:

return mid

elif array[mid] target:

return binary_search(array, target, low, mid-1)

else:

return binary_search(array, target, mid+1, high)

# 调用方法

index = binary_search(array, target, 0, len(array)-1)

循环版本

def binary_search(array, target):

low, high = 0, len(array) - 1

while low = high:

mid = (low + high) // 2

if array[mid] == target:

return mid

elif array[mid] target:

high = mid - 1

else:

low = mid + 1

return -1

# 调用方法

index = binary_search(array, target)

在这里,array 是待查找的有序数组,target 是要查找的元素,low 和 high 分别表示查找区间的左右端点。如果找到了目标元素,函数会返回其在数组中的下标;如果没有找到,函数会返回 -1。

用Java语言编写对整型数组进行二分查找的程序。

public class BinarySearchDemo {

public static void main(String[] args) {

int[] a = new int[]{1,5,7,9,11,18,23,48,69};

int point = new BinarySearchDemo().binarySearch(a, 23);

if(point == -1)

System.out.println("在数组中未查找到数23");

else

System.out.println("数字23是数组中第 " + (point + 1) + " 位数");

}

/**

* 二分法查找一个整数在整型数组中的位置

*

* 算法思路:首先得到数组a的最小值和最大值的下标,分别是:low和high,接着求出值位于数组中间那个数的下标middle

* 然后再将这个middle对应的数组中的数和待查找的数num进行比较,如果相等,则表示已查找到,如果num a[middle]

* 则说明num位于a[low]和a[middle]之间,于是将a[middle - 1]设为较大值,继续求出此时对应的a[middle],

* 再进行比较,其他情况可依次类推。一直到low=high,如果此时还没有在数组a中查找到,则说明该数组a中没有值num,返回-1

*

* @param a 给定的整型数组

* @param num 待查找的数 num

*

* @return 返回整数num在数组a中的位置下标,如果未查找到则返回-1

* */

public int binarySearch(int[] a,int num){

int low = 0;

int high = a.length - 1;

while(low = high){

int middle = (low + high) / 2;

if(num == a[middle])

return middle;

else if(num a[middle])

high = middle - 1;

else

low = middle + 1;

}

return -1;

}

}

程序基本上就是这样了,其中注释中有详细的解释说明


文章标题:java写二分查找代码 java实现二分查找
网页URL:http://myzitong.com/article/doiisje.html