zoukankan      html  css  js  c++  java
  • 基础语法-无序/有序数组中元素的查找

           基础语法-无序/有序数组中元素的查找

                                 作者:尹正杰

    版权声明:原创作品,谢绝转载!否则将追究法律责任。

     

     

     

    一.直接遍历数组进行查找(数组有序/无序都能使用)

    /**
     *    数组中元素的查找
     *     @author 尹正杰
     */
    public class ArrayDemo6 {
        public static void main(String[] args) {
            int[] arr = {1,20,3,80,5,200,175,10};
            
            System.out.println(getIndex(arr,100));
            
            System.out.println(getIndex(arr,200));
        }
        
        /*
         *     对数组中的元素进行查找,获取元素第一次出现的位置:
         *         如果找到了,就返回元素对应的索引
         *         如果没有找到则返回整数"-1",表示该元素并不在数组中存在
         */
        public static int getIndex(int[] arr,int value) {
            
            for (int index = 0; index < arr.length; index++) {
                if (arr[index] == value) {
                    return index;
                }
            }
            return -1;
        }
    }

    二.使用二分法(二分法)查找(必要前提是数组是有序的)

    /**
     *    数组中元素的查找
     *     @author 尹正杰
     */
    public class ArrayDemo6 {
        public static void main(String[] args) {
            //注意,必须保证数组是有序的,否则折半查找的索引就不准确啦!
            int[] arr = {1,3,8,50,175,198,200,300,500};
            
            System.out.println(helfSearch(arr,100));
            
            System.out.println(helfSearch(arr,200));
        }
        
        /*
         *     对数组中的元素进行查找,获取元素第一次出现的位置:
         *         如果找到了,就返回元素对应的索引
         *         如果没有找到则返回整数"-1",表示该元素并不在数组中存在
         */
        public static int helfSearch(int[] arr,int value) {
            int min,mid,max;
            min = 0;
            max = arr.length -1;
            mid = (max + min)/2;
            
            while (arr[mid] != value) {
                if (value > arr[mid]) {
                    min = mid + 1;
                }else if (value < arr[mid]) {
                    max = mid - 1;
                }
                //如果min大于max,说明查询的元素不存在,这个直接执行结束
                if (min > max) {
                    return -1;
                }
                
                mid = (min + max) / 2;
            }
            return mid;
        }
    }

  • 相关阅读:
    多线程-threading模块3
    多线程-threading模块2
    多线程-threading模块
    mac下载模块时报错OSError: [Errno 13] Permission denied: '/Library/Python/2.7/site-packages/chardet'
    python+selenium高亮显示正在操作的页面元素
    判断元素是否存在页面的两种不同写法
    [转]Python+Selenium之expected_conditions:各种判断(上)
    MACE移植要求
    采用Tensorflow内部函数直接对模型进行冻结
    如何正确可视化RAW(ARW,DNG,raw等格式)图像?
  • 原文地址:https://www.cnblogs.com/yinzhengjie2020/p/12221324.html
Copyright © 2011-2022 走看看