Java 元素的查找

2021-03-03 04:27

阅读:628

标签:code   index   pre   print   sea   yar   array   turn   sys   

1. 循环遍历查找

2. 二分法查找

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

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

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

  第一次查找:

  begin = 0

  end = 7  

  mid = (0+7)/2

  67

  第二次查找:

  begin = 4
  end = 7
  mid = 5
  567

  第三次查找:

  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 ) {
            if (arr[j] == i){
                return j;
            }
        }
        return -1;
    }
}

 

 

Java 元素的查找

标签:code   index   pre   print   sea   yar   array   turn   sys   

原文地址:https://www.cnblogs.com/homle/p/14400073.html


评论


亲,登录后才可以留言!