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;
        }
    }

     

  • 相关阅读:
    ADO.NET
    VS调SQL中存储过程实现登陆
    摇奖
    面向对象、类、字段、属性、构造函数、析构函数
    打架
    2012/7/26Extjs笔记_Ext.grid.EditorGridPanel
    2012/7/30sql2005学习笔记
    SVN版本冲突解决办法(非加锁)
    2012/7/30sqlserver2005学习随笔
    struts环境搭建
  • 原文地址:https://www.cnblogs.com/homle/p/14400073.html
Copyright © 2011-2022 走看看