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

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

public class BinarySearch {

  public static void main(String[] args) {
    int[] arr = {234,245,77,3,543,67,78,95,378,678,205,753,457,2903,340};
    int searchWord = 1150;//要查找的数
    System.out.println("普通循环查找"+searchWord+" 用的次数是"+generalLoop(arr, searchWord));
    System.out.println("二分法查找"+searchWord+" 用的次数是"+binarySearch(arr, searchWord));
  }
  //普通循环法,最少需要比较一次,比如查找1,最多需要比较15次,比如8721
  static int generalLoop(int[] arr,int searchWord){
    int searchCount = 0;
    for(int i=0;i<arr.length;i++){
      searchCount++;
      if(searchWord==arr[i]){
        break;
      }
    }
    return searchCount;
  }
  //二分法查找
  static int binarySearch(int[] arr,int searchWord){
    Arrays.sort(arr);//先对传进来的数组进行排序
    int iIndex = 0;//相当于指针的变量
    int iStart = 0;
    int iEnd = arr.length-1;
    int searchCount = 0; //循环次数的统计
    for(int i=0;i<arr.length/2;i++){
      searchCount++;
      iIndex = (iStart+iEnd)/2;
      if(arr[iIndex]<searchWord){
        iStart = iIndex;
      }else if(arr[iIndex]>searchWord){
        iEnd = iIndex;
      }else {
        break;
      }
    }
    return searchCount;
  }
}

转载于:https://www.cnblogs.com/hwgok/p/5356298.html

你可能感兴趣的文章
C++多线程
查看>>
Android ----制作自己的Vendor
查看>>
iOS 中隐藏UITableView最后一条分隔线
查看>>
Android初级教程理论知识(第一章快速入门)
查看>>
c#基础知识梳理(五)
查看>>
高精度大数计算R^n与字符串的处理
查看>>
Sql FAQ
查看>>
【Android】冷门常用 ADB
查看>>
知识分子真正的悲哀是依附强权放弃说理
查看>>
优秀简历要遵循哪些规则
查看>>
Grow A Search Result Specification
查看>>
第一次使用Android Studio时你应该知道的一切配置(一)
查看>>
设计模式之结构型(5)-外观模式(Facade)
查看>>
Python使用requirements.txt安装类库
查看>>
Linux top命令的用法详细详解
查看>>
C# 读取控制台的Console.Write
查看>>
Oracle数据库多行记录转换一行并排序函数
查看>>
MySQL数据库入门笔记
查看>>
大道至简读后感(第六章)
查看>>
[重要更新][Quartus II][14.1正式版]
查看>>