For investors

股价:

5.36 美元 %

认识达内从这里开始

认真做教育 专心促就业

重庆java培训机构:二分查找
  • 发布:重庆达内
  • 来源:重庆达内
  • 时间:2021-04-07 13:36

当我们需要在已排好序的数组中寻找到特定值时,可以使用二分查找,效率高。

所需要用到的工具:左指针、右指针、mid指针

思想:左指针右指针分别对应该元素所在数组中的范围边界,初始化值为0和a.length;取中间值=(左指针+右指针+1)/2,这样就得到两个个区间(左指针,mid)(mid,右指针),判断mid处的值与待确定位置值(S)的大小关系,若mid>S,说明S的位置应该在左区间,反之则在右区间。然后取对应的区间,再次如法炮制,递归求解后得到正确结果。

public class BinarySearch {

public static void main(String[] args) {

// TODO Auto-generated method stub

int[] a = new int[] {1,2,4,6,7,9,11,15};

System.out.println(BinarySearch.binarySearch(a, 0, a.length, 10));

}

static boolean isFind = false;

public static int binarySearch(int[] a,int left,int right,int search) {

while(!isFind)

{

if(left>=right) break;

int mid = (left+right+1)/2;

if(a[mid] > search) {

right = mid-1;

}else if(a[mid] < search) {

left = mid+1;

}else if(a[mid] == search) {

isFind = true;

left = mid;

}

}

if(!isFind) left = -1;

return left;

}

}

<  上一篇:重庆java培训:io流(缓冲字节流)
下一篇:重庆java培训班:关于动态规划法  >
相关推荐
最新资讯
免费试听课程
  • 全部课程
  • IT课程
  • 设计课程
  • 运营课程
Free courses
最新开班时间
  • 北京
  • 上海
  • 广州
  • 深圳
  • 南京
  • 成都
  • 武汉
  • 西安
  • 青岛
  • 天津
  • 杭州
  • 重庆
  • 哈尔滨
  • 济南
  • 沈阳
  • 合肥
  • 郑州
  • 长春
  • 苏州
  • 长沙
  • 昆明
  • 太原
  • 无锡
  • 石家庄
  • 南宁
  • 佛山
  • 珠海
  • 宁波
  • 保定
  • 呼和浩特
  • 洛阳
  • 烟台
  • 运城
  • 开课名称
  • 开班时间
  • 抢座
  • 咨询
  • 开课名称
  • 开班时间
  • 抢座
  • 咨询
预约申请试听课
收起