码迷,mamicode.com
首页 > 其他好文 > 详细

二分法查找

时间:2016-04-05 19:17:46      阅读:97      评论:0      收藏:0      [点我收藏+]

标签:

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;

  }
}

二分法查找

标签:

原文地址:http://www.cnblogs.com/hwgok/p/5356298.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!