【发布时间】:2022-01-23 06:32:06
【问题描述】:
导入 java.util.*;
公开课练习{
static ArrayList<Integer> populateList(Scanner sc , ArrayList<Integer> al){
String l = sc.nextLine();
String arr[] = l.trim().split("\\s++");
for(int i = 0; i<arr.length; i++){
al.add(Integer.parseInt(arr[i]));
}
return al;
}
static void displayList(String s , ArrayList<Integer> al){
System.out.print(s+": ");
for(int i = 0; i<al.size(); i++){
System.out.print(al.get(i)+" " );
}
System.out.println("");
}
static ArrayList<Integer> sortListDesc(ArrayList<Integer> al ){
Collections.sort(al,Collections.reverseOrder());
return al;
}
static int binSearch(ArrayList<Integer> al , int key){
int index = Collections.binarySearch(al,key,Collections.reverseOrder());
return index+1;
}
public static void main(String[] args) {
int key, index;
Scanner sc = new Scanner(System.in); // Handle inputs
// Create a list of Integers
ArrayList<Integer> al = new ArrayList<Integer>();
// Enter few numbers in a line and populate the list
populateList( sc, al );
// Display list
displayList( "Original List", al );
// Sort list in descending order
sortListDesc( al );
// Display sorted list
displayList( "Sorted List", al );
// Input key
key = sc.nextInt();
// Perform binary search for key in al
index = binSearch(al, key);
if (index >= 0)
System.out.println("Position: " + index);
else
System.out.println("Not found");
}
}
/* 她的我的代码,在 binSearch 方法中我使用了 binarySearch 方法。我知道binarySearch仅在arrayList按升序排序时才接受,所以我再次修改它以传递升序aList,但我的问题是它是否看到按升序排序然后它如何给出降序的位置订购数组列表。 例如,如果我输入 34 78 90 67 那么它将按降序排序 90 78 67 30 。但我必须再次修改它,因为它不接受降序数组。所以它得到升序数组列表 30 67 78 90 然后当我传递密钥时(假设 78)它应该返回第 3 个位置 ..但不它返回为降序位置 2 为什么会发生这种情况? */
【问题讨论】:
标签: java arraylist binary-search-tree