• 二分查找(Java实现)


      有没有正在学数据结构的?没学过C,只会Java的我表示算法好难 ┭┮﹏┭┮。

      废话不多说,分享一个很简单的二分查找,在有序数组(从小到大排序)中查找T类型的变量,我就直接用int 型了,数组第一个元素(下标为0的元素)不使用,实际查找从第二个元素(下标为1的元素)开始。

      全部代码分为两部分。

      1.方法类

     1 /*
     2  * 二分法在有序数组中查找变量k
     3  */
     4 public class BinarySearch {
     5 
     6     /*
     7      * 方法返回值为要查找的元素下标,若数组中没有待查找的元素k,则返回-1
     8      */
     9     int binarySearch(int[] array,int k) {
    10         int left,right,mid;
    11         final int NotFound=-1;
    12         
    13         left = 1;  //初始化左边界
    14         right = array.length-1;  //初始化右边界
    15         
    16         while(left<=right) {
    17             mid = (left+right)/2;
    18             if(k<array[mid]) {
    19                 right = mid-1;
    20             }else if(k>array[mid]){
    21                 left = mid+1;
    22             }else {
    23                 return mid;
    24             }
    25         }
    26         
    27         return NotFound;
    28     }
    29 }

      2.测试类

     1 /*
     2  * 二分查找测试类
     3  */
     4 import java.util.*;
     5 public class TestBinarySearch {
     6 
     7     public static void main(String[] args) {
     8         
     9         int[] array = {0,1,6,8,13,24,45,64,76,77,78,90,93};  //初始化数组,实际内容从第二个数开始,也就是下标为1的数开始
    10         int index=-1;  //数组索引
    11         
    12         System.out.print("请输入你要查找的整数: ");
    13         Scanner input=new Scanner(System.in);
    14         int intentNum=input.nextInt();
    15         
    16         BinarySearch bs = new BinarySearch();
    17         int sub=bs.binarySearch(array,intentNum);
    18         
    19         if(sub!=-1) {
    20             index = sub;
    21             System.out.println(array[index]+"在数组中的位置是 "+index);
    22         }else {
    23             System.out.println("没有找到‘"+intentNum+"’这个数。");
    24         }
    25         
    26     }
    27 
    28 }

      测试类这个随意更改,binarySearch()方法是核心。

    如果这篇文章对你有用的话,希望点个赞,支持一下作者,有什么更好的看法和建议欢迎评论区留言。Bye,下次见!

  • 相关阅读:
    register_shutdown_function
    字节转换
    考虑 PHP 5.0~5.6 各版本兼容性的 cURL 文件上传
    linux--svn checkout
    linux命令
    linux---mysql忘记密码
    array_merge函数的注意事项
    逻辑卷使用记录笔记
    系统设计时关于性能问题处理的几点心得
    SSH防暴力破解脚本
  • 原文地址:https://www.cnblogs.com/ljydbk/p/ljy.html
Copyright © 2020-2023  润新知