zoukankan      html  css  js  c++  java
  • java实现折半查找(递归和非递归方式)

    /**
     * 使用条件:
     * 1、折半查找必须采用顺序存储结果
     * 2、关键字必须有序
     */
    public class TestBinarySearch {
      public static void main(String[] args) {
        //定义一个数组
        int[] arr = {11,21,31,41,51,61,71,81,91};
        System.out.println("非递归实现:"+binarySearch(arr,61));
        System.out.println("递归实现:"+recursionSearch(arr,0,arr.length - 1,61));
      }
    
      /**
       * 非递归实现
       */
      static int binarySearch(int[] arr,int key){
        //定义开始值和结束值索引
        int start = 0;
        int end = arr.length - 1;
        //查找前的判断 开始值索引大于结束值索引才进行查找
        while (start <= end){
          //定义中间索引
          int mid = (start + end) / 2;
          //如果中间索引对应的元素值等于目标值,直接返回中间值索引
          if (arr[mid] == key){
            return mid;
            //中间值比目标值大,说明目标值在开始值和中间值之间 结束值索引变为mid-1
          }else if (arr[mid] > key){
            end = mid - 1;
            //反之,目标值在中间值和结束值之间,开始值索引变为mid+1
          }else {
            start = mid + 1;
          }
        }
        //查找不到 返回-1
        return -1;
      }
      /**
       * 递归实现
       */
      static int recursionSearch(int[] arr,int start,int end,int key){
        //中间值索引
        int mid = (start + end) / 2;
        //递归开始条件
        while (start <= end){
          //中间值等于目标值,直接返回中间值索引
          if (arr[mid] == key){
            return mid;
          }else if (arr[mid] > key){
            //中间值大于目标值 结束值索引变为mid-1,继续递归查找
            return recursionSearch(arr,start,mid - 1,key);
          }else{
            //中间值小于目标值,开始值索引变为mid+1,继续递归查找
            return recursionSearch(arr,mid + 1,end,key);
          }
        }
        //递归结束 未找到返回-1
        return -1;
      }
    }

    运行结果:

  • 相关阅读:
    Delphi中SQL语句配置参数代码示例
    Delphi中treeview的使用部分
    Delphi listview使用部分总结代码
    如何用Delphi编写自己的可视化控件
    关于treeview节点图标的帖子
    Delphi调用存储过程
    DELPHI的开源控件集(转自http://xieyunc.blog.163.com/)
    雨巷(A Lane in the Rain)
    五一过去了,新的开始
    好好的学习,做个有本事的人:),好好的玩,做个快乐的人!
  • 原文地址:https://www.cnblogs.com/sinoaccer/p/12118179.html
Copyright © 2011-2022 走看看