• 二分查找


     1 package search;
     2 
     3 /**
     4  * 二分查找又称折半查找,它是一种效率较高的查找方法。 
     5   【二分查找要求】:1.必须采用顺序存储结构 2.必须按关键字大小有序排列。
     6  * @author Administrator
     7  *
     8  */
     9 public class BinarySearch { 
    10     public static void main(String[] args) {
    11         int[] src = new int[] {1, 3, 5, 7, 8, 9}; 
    12         System.out.println(binarySearch(src, 7));
    13         System.out.println(binarySearch(src,3,0,src.length-1));
    14     }
    15 
    16     /**
    17      * * 二分查找算法 * *
    18      * 
    19      * @param srcArray
    20      *            有序数组 *
    21      * @param des
    22      *            查找元素 *
    23      * @return des的数组下标,没找到返回-1
    24      */ 
    25    public static int binarySearch(int[] srcArray, int des){ 
    26     
    27         int low = 0; 
    28         int high = srcArray.length-1; 
    29         while(low <= high) { 
    30             int middle = (low + high)/2; 
    31             if(des == srcArray[middle]) { 
    32                 return middle; 
    33             }else if(des <srcArray[middle]) { 
    34                 high = middle - 1; 
    35             }else { 
    36                 low = middle + 1; 
    37             }
    38         }
    39         return -1;
    40    }
    41 
    42       /**  
    43      *二分查找特定整数在整型数组中的位置(递归)  
    44      *@paramdataset  
    45      *@paramdata  
    46      *@parambeginIndex  
    47      *@paramendIndex  
    48      *@returnindex  
    49      */
    50     public static int binarySearch(int[] dataset,int data,int beginIndex,int endIndex){  
    51        int midIndex = (beginIndex+endIndex)/2;  
    52        if(data <dataset[beginIndex]||data>dataset[endIndex]||beginIndex>endIndex){
    53            return -1;  
    54        }
    55        if(data <dataset[midIndex]){  
    56            return binarySearch(dataset,data,beginIndex,midIndex-1);  
    57        }else if(data>dataset[midIndex]){  
    58            return binarySearch(dataset,data,midIndex+1,endIndex);  
    59        }else {  
    60            return midIndex;  
    61        }  
    62    } 
    63 
    64 }
  • 相关阅读:
    fastadmin自定义列表下拉框筛选
    printf输出16进制和对齐, fprintf的运用
    微信小程序代码提交发布之后,必须删除原来的小程序才会更新到最新的代码
    win 内存优化
    CRT工具 直连AMZ主机
    解决Jumpserver邮件不发送
    NxShell
    Photoshop 2022 破解版下载
    IDA Pro7.7破解版下载
    MAC下调用已打开浏览器的方法
  • 原文地址:https://www.cnblogs.com/cloudwind/p/2716696.html
Copyright © 2020-2023  润新知