给定数组arr[] = {5,9,3,7,8},返回一个新数组,数组的元素为这个给定数组中元素从大到小排序的下标值再加10,得到的新数组为{13,10,14,12,11}。
public class Array02 {
public static void main(String[] args) {
//返回一个新数组,数组的元素为这个给定数组中元素从大到小排序的下标值再加10
int[] arr = {5, 9, 3, 7, 8};
array02(arr);
//[13, 10, 14, 12, 11]
}
public static void array02(int[] arr){
int[] result = new int[arr.length];
int[] newArray = Arrays.copyOf(arr,arr.length);
Arrays.sort(newArray);
//3,5,7,8,9
for(int i =0;i<result.length;i++){
result[i] = arr.length-1-Arrays.binarySearch(newArray,arr[i])+10;
}
System.out.println(Arrays.toString(result));
}
}
Arrays类的binarySearch()方法,可以使用二分搜索法来搜索指定的数组,以获得指定对象。用来获取数组的下标值。
Arrays工具类没有提供从大到小的排序,我们需要自己实现。
int[] arr1 = {5,9,3,7,8};
Arrays.sort(arr1);
//[3,5,7,8,9]
int[] arr2 = new int[arr1.length];
for (int i = 0; i < arr1.length; i++) {
arr2[i] = arr1[arr1.length - i - 1];
}
//[9,8,7,5,3]