您的位置:首页 > 编程语言 > Java开发

算法学习之java实现二分查找

2015-07-22 22:18 393 查看

二分查找:

思想:针对有序的数组,将待查找的数跟数组的中间值进行比较,来确定更小的范围的思想。

代码实现:

package com.scy.arithmetic;

import java.util.Arrays;

/*
* 二分查找:思想相对有序的数组而言,将待查找的数跟数组的中间值进行比较,如果比中间值小,则从开始到中间值前边的那个范围的中间值进行比较
* 如果等于中间值,则返回中间值坐标,如果大于中间值,则将范围锁定在中间值后边到结尾的范围继续中间值比较
*/

public class MiddleSelect {
public static void main(String[] args) {
int[] a=new int[20];
for (int i = 0; i < 20; i++) {
a[i]=(int)(Math.random()*(100-1+1)+1);
}
//将a数组进行排序
Arrays.sort(a);
System.out.println(Arrays.toString(a));
//此处如果存在相同值的情况,则会返回第一个查到的值的坐标
new MiddleSelect().middleSelect(a, 0, a.length-1, a[3]);
}
public void middleSelect(int[] a,int start,int end,int standard){
if(start<end){
int middle=(start+end)/2;
if(a[middle]>standard){
middleSelect(a, start, middle-1, standard);
}else if(a[middle]<standard){
middleSelect(a, middle+1, end, standard);
}else{
System.out.println(middle);
}
}else{
System.out.println("查找的值数值中不存在");
}
}
}


阅读更多
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: