博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
java基础-二分法
阅读量:5092 次
发布时间:2019-06-13

本文共 1113 字,大约阅读时间需要 3 分钟。

 

算法:当数据量很大适宜采用该方法。采用二分法查找时,数据需是有序不重复的。 基本思想:假设数据是按升序排序的,对于给定值 x,从序列的中间位置开始比较,如果当前位置值等于 x,则查找成功;若 x 小于当前位置值,则在数列的前半段中查找;若 x 大于当前位置值则在数列的后半段中继续查找,直到找到为止。

假设有一个数组 { 12, 23, 34, 45, 56, 67, 77, 89, 90 },现要求采用二分法找出指定的数值并将其在数组的索引返回,如果没有找到则返回 -1。代码如下:

package cn.sunzn.dichotomy;public class DichotomySearch {   public static void main(String[] args) {       int[] arr = new int[] { 12, 23, 34, 45, 56, 67, 77, 89, 90 };       System.out.println(search(arr, 12));       System.out.println(search(arr, 45));       System.out.println(search(arr, 67));       System.out.println(search(arr, 89));       System.out.println(search(arr, 99));   }   public static int search(int[] arr, int key) {       int start = 0;       int end = arr.length - 1;       while (start <= end) {           int middle = (start + end) / 2;           if (key < arr[middle]) {               end = middle - 1;           } else if (key > arr[middle]) {               start = middle + 1;           } else {               return middle;           }       }       return -1;   }}

 

转载于:https://www.cnblogs.com/com-tyc/p/6497672.html

你可能感兴趣的文章
保持长宽比 对背景图像进行修改android:scaleType="fitXY"
查看>>
python-上传下载文件
查看>>
【转】如何解决:Android中 Error generating final archive: Debug Certificate expired on 10/09/18 16:30 的错误...
查看>>
HttpClient短信接口
查看>>
echo print printf() sprintf()区别
查看>>
https阿里云证书购买与apache环境配置
查看>>
21个js 技巧收藏
查看>>
PictureBox滚动条、鼠标中轴滚动
查看>>
Codeforces 475C Kamal-ol-molk&#39;s Painting 模拟
查看>>
G-Sensor 校准标准
查看>>
338. Counting Bits
查看>>
ArcGIS API For JS实现动态点扩散
查看>>
ios 自定义按钮
查看>>
在linux里如何建立一个快捷方式,连接到另一个目录
查看>>
类模板使用示例(二)类模板整体特化
查看>>
配置Memcache服务器并实现主从复制功能(repcached)(转)
查看>>
ThinkPhp 更改 BIT 类型的问题
查看>>
unbuntu 18.04 LTS 版 安装Samba服务器
查看>>
题解报告:hdu 2030 汉字统计
查看>>
ACM_括号匹配
查看>>