JAVA - 二分查找

文章介绍了如何使用快速排序算法对数组进行排序,然后应用二分查找方法来高效地在排序后的数组中寻找特定值。二分查找通过不断将查找区间减半来提高效率,而快速排序是常用的原地排序算法,两者结合能有效提升数据处理速度。
摘要由CSDN通过智能技术生成

二分查找是一个很好的查找方式,但是前提是必须是排好序的数组,二分查找相当于是每次都去掉一般的范围。

接下来,我们先去快速排序对数组进行排序:

public void quickSort(int[] arr){
    for(int i = 0; i < arr.length-1; i++){
        for(int j = 0; j < arr.length;j++){
            if(arr[i] < arr[j]){
                int temp = arr[i];
                arr[i] = arr[j];
                arr[j] = temp;    
            }
        }
    }
}

接下来,我们书写二分查找的方法:


      /**
       * 二分查找
       * @param arr 被查找的数组
       * @param key 需要被找的值
       * @return 返回查找到的数值的下标,没有找到则返回-1
       */
      public static int binarySearch(int[] arr,int key){
        int left = 0;
        int right = arr.length-1;
        int mid = (left+right) / 2;
        while(left <= right){
          //防止数值不在数组之中
          if (key < arr[left] || key > arr[right]) {
            return -1;
          }
          if(arr[mid] == key){
            return mid;
          }
          if(arr[mid] > key){
            right = mid -1;
          }
          if(arr[mid] < key){
            left = mid + 1;
          }
        }
        return -1;
      }

二分查找就是按照一分为二的原则,我们先取中间值,如果需要被找到的值在左边,则是让我们的数组变成左半边,以此类推,逐渐查找,直到找个那个数值,即返回下标。

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值