zoukankan      html  css  js  c++  java
  • 二分查找算法

    第一中实现:

    public static int commonBinarySearch(int[] arr,int key){
        int min= 0;
        int max= arr.length - 1;
        int middle = 0;        //定义middle
            
        if(key < arr[min] || key > arr[max] || min> max{
            return -1;                
        }
            
        while(min <= max){
            middle = (min + max) / 2;
            if(arr[middle] > key){
                //比关键字大则关键字在左区域
                max= middle - 1;
            }else if(arr[middle] < key){
                    //比关键字小则关键字在右区域
                min= middle + 1;
            }else{
                return middle;
            }
        }
            
        return -1;    //最后仍然没有找到,则返回-1
    }

    第二种实现:

    /**
    * 二分查找算法
    * @param args
    */
    public static void main(String[] args) {
    
      int []arr = {1,2,3,4,5,6,7,8,9,10,12,14,15};
    
      int min = 0;
      int max = arr.length-1;
      int mid = (min + max) / 2;
    
      int n = 15;
    
      for (int i = 0; i < arr.length; i++) {
        if(arr[mid] < n) {
          min = mid + 1;
        }else if(arr[mid] > n) {
          max = mid - 1;
        }else {
          System.out.println("查找结果为:"+ arr[mid]+",下表为: "+mid);
          break;
        }
        mid = (max + min) / 2;
      }
    
    }
  • 相关阅读:
    处理器及其调度
    java面向对象
    操作系统概述
    mysql 基础操作
    java集合类详解
    java数组
    java方法
    Python—进程间通信
    Python—TCP的黏包问题以及UDP的分片问题
    Python—网络通信编程之tcp非阻塞通信(socketserver)
  • 原文地址:https://www.cnblogs.com/M87-A/p/11989820.html
Copyright © 2011-2022 走看看