Java-Arrays工具类

1.Arrays工具类

1.1 Arrays工具类:

    该类包含用于操作数组的各种方法(如排序和搜索)。

需要掌握的三个方法

  • public static String toString(int[] a)
  • public static void sort(int[] a)
  • public static int binarySearch(int[] a,int key)

注意:sort()方法排序的底层是快速排序

binarySearch的底层是二分查找法;

  • 底层代码分析如下:返回的值是目标值下标索引。
public static int binarySearch(int[] a, int key) {
        // a -- arr [2, 11, 12, 34, 122]
        // key -- 133
        // a.length -- 5
        return binarySearch0(a, 0, a.length, key);
}

private static int binarySearch0(int[] a, int fromIndex, int toIndex,int key) {
        /*
            a -- arr [2, 11, 12, 34, 122]
            fromIndex -- 0
            toIndex -- 5
            key -- 133
        */
        int low = fromIndex;   // 0
        int high = toIndex - 1;  // 4

        while (low <= high) {
            int mid = (low + high) >>> 1; // 2  3  4
            int midVal = a[mid]; // 12 34 122

            if (midVal < key)
                low = mid + 1;  // 3 4 5
            else if (midVal > key)
                high = mid - 1;
            else
                return mid; // key found
        }
        return -(low + 1);  // key not found. // -6
}

练习代码如下:

public class ArraysTool {
    public static void main(String[] args) {
        int[] a ={34,74,33,8,85,64,25,42,1,5,8,9};
        System.out.println("排序之前:"+Arrays.toString(a));
        System.out.println("====================================================");
        Arrays.sort(a);//Array数组的sort方法底层就是快速排序;
        System.out.println("排序之后:"+Arrays.toString(a));
        //public static int binarySearch(int[] a ,int key)
        //(底层是二分查找)前提序列是有序的!!!
        //返回值是元素位置的索引
        System.out.println(Arrays.binarySearch(a, 12));
    }
}
posted @ 2022-03-27 19:51  a-tao必须奥利给  阅读(31)  评论(0)    收藏  举报