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

浙公网安备 33010602011771号