1. import java.lang.reflect.Array;
  2. import java.nio.Buffer;
  3. import java.util.Arrays;
  4. import java.util.Random;
  5.  
  6. //=================================================
  7. // File Name : Binary_Search
  8. //------------------------------------------------------------------------------
  9. // Author : Common
  10.  
  11. //类名:BinarySearch_Find
  12. //属性:
  13. //方法:
  14. class BinarySearch_Find{
  15. private int[] temp;
  16. private int searchKey;
  17. private int lowerBound = 0; //下界
  18. private int upperBound ; //上界
  19. private int curNum;
  20.  
  21. public int[] getTemp() {
  22. return temp;
  23. }
  24.  
  25. public void setTemp(int[] temp) {
  26. this.temp = temp;
  27. }
  28.  
  29. public BinarySearch_Find(int[] temp) {//构造函数
  30. this.temp = temp;
  31. this.upperBound = temp.length-1;
  32. }
  33.  
  34. public int find(int searchKey){
  35. this.searchKey = searchKey;
  36. while(true){
  37. curNum = (lowerBound+upperBound)/2;
  38. if(temp[curNum]==this.searchKey){
  39. return curNum; //find
  40. }
  41. else if(lowerBound>upperBound){
  42. return -1; //没有find
  43. }
  44. else{
  45. if(temp[curNum]<this.searchKey){
  46. lowerBound = curNum+1;
  47. }
  48. else{
  49. upperBound = curNum-1;
  50. }
  51. }
  52. }
  53. }
  54.  
  55. }
  56.  
  57. //类名:RandomArrays
  58. //属性:
  59. //方法:
  60. class RandomArrays{ //生成随机数组,有Num个
  61.  
  62. public int[] getArrays(int Num){
  63. int[] Arrays = new int[Num];
  64. Random r = new Random();
  65.  
  66. for(int i=0;i<Num;i++){
  67. Arrays[i] = r.nextInt(1000);
  68. // System.out.print(Arrays[i]+"、");
  69. }
  70. return Arrays;
  71. }
  72. }
  73.  
  74. //类名:OrderedArrays
  75. //属性:
  76. //方法:
  77. class OrderedArrays{ //生成有序数组,从0开始到Num
  78.  
  79. public int[] getArrays(int Num){
  80. int[] Arrays = new int[Num];
  81.  
  82. for(int i=0;i<Num;i++){
  83. Arrays[i] = i;
  84. // System.out.print(Arrays[i]+"、");
  85. }
  86. return Arrays;
  87. }
  88. }
  89.  
  90. //主类
  91. //Function : Binary_Search
  92. public class Binary_Search {
  93.  
  94. public static void main(String[] args) {
  95. // TODO 自动生成的方法存根
  96.  
  97. // RandomArrays array_demo = new RandomArrays();
  98. // BinarySearch_Find arrays = new BinarySearch_Find(array_demo.getArrays(100));
  99.  
  100. OrderedArrays array_demo = new OrderedArrays();
  101. BinarySearch_Find arrays = new BinarySearch_Find(array_demo.getArrays(100));
  102. System.out.println(Arrays.toString(arrays.getTemp()));
  103. System.out.println(arrays.find(1000));
  104.  
  105. }
  106.  
  107. }

Java查找算法——二分查找的更多相关文章

  1. C语言实现常用查找算法——二分查找

    #include<stdio.h> void insert_sort(int a[],int n); int binary_search(int a[],int x,int n); voi ...

  2. 查找算法----二分查找与hash查找

    二分查找 有序列表对于我们的实现搜索是很有用的.在顺序查找中,当我们与第一个元素进行比较时,如果第一个元素不是我们要查找的,则最多还有 n-1 个元素需要进行比较. 二分查找则是从中间元素开始,而不是 ...

  3. 各种查找算法的选用分析(顺序查找、二分查找、二叉平衡树、B树、红黑树、B+树)

    目录 顺序查找 二分查找 二叉平衡树 B树 红黑树 B+树 参考文档 顺序查找 给你一组数,最自然的效率最低的查找算法是顺序查找--从头到尾挨个挨个遍历查找,它的时间复杂度为O(n). 二分查找 而另 ...

  4. Java实现的二分查找算法

    二分查找又称折半查找,它是一种效率较高的查找方法. 折半查找的算法思想是将数列按有序化(递增或递减)排列,查找过程中采用跳跃式方式查找,即先以有序数列的中点位置为比较对象,如果要找的元素值小 于该中点 ...

  5. Java中常用的查找算法——顺序查找和二分查找

    Java中常用的查找算法——顺序查找和二分查找 神话丿小王子的博客 一.顺序查找: a) 原理:顺序查找就是按顺序从头到尾依次往下查找,找到数据,则提前结束查找,找不到便一直查找下去,直到数据最后一位 ...

  6. Java学习之二分查找算法

    好久没写算法了.只记得递归方法..结果测试下爆栈了. 思路就是取范围的中间点,判断是不是要找的值,是就输出,不是就与范围的两个临界值比较大小,不断更新临界值直到找到为止,给定的集合一定是有序的. 自己 ...

  7. 经典算法二分查找循环实现Java版

    二分查找 定义 二分查找(Binary Search)又称折半查找,它是一种效率较高的查找方法. 要求 (1)必须采用顺序存储结构 (2)必须按关键字大小有序排列 查找思路 首先将给定值K,与表中中间 ...

  8. Java顺序查找、二分查找

    Java顺序查找.二分查找   查找算法中顺序查找算是最简单的了,无论是有序的还是无序的都可以,只需要一个个对比即可,但其实效率很低. 顺序查找 动图演示 详细代码 // 顺序查找 public st ...

  9. C语言查找算法之顺序查找、二分查找(折半查找)

    C语言查找算法之顺序查找.二分查找(折半查找),最近考试要用到,网上也有很多例子,我觉得还是自己写的看得懂一些. 顺序查找 /*顺序查找 顺序查找是在一个已知无(或有序)序队列中找出与给定关键字相同的 ...

随机推荐

  1. 【Alpha版本】冲刺阶段——Day 3

    我说的都队 031402304 陈燊 031402342 许玲玲 031402337 胡心颖 03140241 王婷婷 031402203 陈齐民 031402209 黄伟炜 031402233 郑扬 ...

  2. 0924Linux常用命令

    写的不错 转载了,有需要的同学们,可以多多学习,适合小白哦 http://blog.csdn.net/xiaoguaihai/article/details/8705992/ 关于最后增加一点 tar ...

  3. 51nod 1040最大公约数和(欧拉函数)

    1040 最大公约数之和 题目来源: rihkddd 基准时间限制:1 秒 空间限制:131072 KB 分值: 80 难度:5级算法题  收藏  关注 给出一个n,求1-n这n个数,同n的最大公约数 ...

  4. 100114J

    经过思考后,很明显,我们可以看出应该是求出两条最长的链,链是指挂在连通块上的

  5. Hibernate @Formula 注解方式

    1.Formula的作用 Formula的作用就是用一个查询语句动态的生成一个类的属性 就是一条select count(*)...构成的虚拟列,而不是存储在数据库里的一个字段.用比较标准的说法就是: ...

  6. 【USACO 1.4】Arithmetic Progressions

    /* TASK: ariprog LANG:C++ URL:http://train.usaco.org/usacoprob2?a=PA9lOcZrdWq&S=ariprog SOLVE:平方 ...

  7. 非编码RNA

    生命的基本过程是从DNA转录成mRNA,再翻译成蛋白质发挥功能.DNA就像一张绝密的密码图,不能随意被移动,只能被锁在细胞核里.要想知道这些密码,只能像复印一样,将密码图复印到mRNA上,由它们把这些 ...

  8. BIEE定制化

    (1)自定义图片的引用 (2)修改产品本身的一些图片内容 (3)修改产品本身的一些文字 如何引用自己的自定义图片: 直接找路径或者图片就可以修改 推荐不要直接替换,直接替换导致有的内容没办法直接显示出 ...

  9. oracle大数据量。表分区提示查询效率

    现在业务有一张usertrack 日志记录表.每天会产生30万条数据.数据量大查询效率会非常慢 所以我考虑通过表分区来提示效率  逻辑上是一张表.但是分区后会按照分区条件将数据分在不同的物理文件 优点 ...

  10. Jenkins实现测试环境到生产环境一键部署(Windows)

    前言: 因为dotnet在发布站点后,然后再上传服务时,会因为各种的网速问题,导致站点瞬间挂掉!那么通过一键部署,先在测试站点测试好的文件,复制到正式站点上的一个缓冲区,进行预热配置,之后再本机进行文 ...