zoukankan      html  css  js  c++  java
  • Java 元素的查找

    1. 循环遍历查找

    2. 二分法查找

      前提:已经从小到大排序的数组序列。

      原理:每次都以中间元素分割,如果中间的元素小于查找元素,则说明查找元素在后面,再从中间元素后面的元素为开始,接着查找,以此类推;如果中间元素大于要查找的元素,则说明查找元素再中间元素的左边,则从中间元素的前一个元素查找;

      数组序列:12, 23, 45, 67, 122, 567, 890, 900;需要查找的元素是890

      第一次查找:

      begin = 0

      end = 7  

      mid = (0+7)/2

      67 < 890

      第二次查找:

      begin = 4
      end = 7
      mid = 5
      567<890

      第三次查找:

      begin = 6

      end = 7

      mid = 6

      890 = 890

      程序实现:

    public class SearchArray {
        public static void main(String[] args) {
            int[] arr = {44,2,11,98,55,34};
            int index = ArraySearch(arr,100);
            System.out.println("遍历查找结果:");
            System.out.println(index == -1? "该元素没有找到":"该元素的下标:"+index);
    
            int[] arr1 = {12, 23, 45, 67, 122, 567, 890, 900};
            int index1 = BinaryArray(arr1,45);
            System.out.println("二分法查找结果:");
            System.out.println(index1 == -1? "该元素没有找到":"该元素的下标:"+index1);
        }
    
        /**
         * 二分法查找
         * @param arr1
         * @param i
         * @return
         */
        public static int BinaryArray(int[] arr1, int i) {
            int begin = 0;
            int end = arr1.length - 1;
            while (begin <= end){
                int mid = (begin + end)/2;
                if(arr1[mid] == i){
                    return mid;
                }else if(arr1[mid] < i){
                    begin = mid + 1;
                }else {
                    end = mid - 1;
                }
            }
            return -1;
        }
    
        /**
         * 遍历查找
         * @param arr 需要查找的数组
         * @param i  需要查找的元素
         * @return   返回值
         */
        public static int ArraySearch(int[] arr, int i) {
            for (int j = 0; j < arr.length; j++) {
                if (arr[j] == i){
                    return j;
                }
            }
            return -1;
        }
    }

     

  • 相关阅读:
    ElementUI的Upload上传,配合七牛云储存图片
    Vue : props 使用细节(父组件传递数据给子组件)
    vue弹窗插件实战
    vue实现单选多选反选全选全不选
    Vue.js新手入门指南
    ref 与 $refs 如何关联
    input框只允许输入正整数、正数(包含小数)的解决方法 vue.js实现
    Vue.js 使用 Swiper.js 在 iOS 11 时出现错误
    svn使用规范
    Android 动态设置控件获取焦点
  • 原文地址:https://www.cnblogs.com/homle/p/14400073.html
Copyright © 2011-2022 走看看