[英]Java: Unsorted Array to Descending Sorted Array
我是一個學習Java的初學者,我正嘗試將數組中的變量按降序傳輸到另一個數組。 這是我的代碼:
int num[] = new int[6];
int DecSort[] = new int[6];
System.out.println("Input 6 numbers: ");
for (int i = 0; i < 6; i++) {
num[i] = Integer.parseInt(br.readLine());
}
//sorted array is descending
int max = num[0];
int maxpos = 0;
for (int j = 0; j < 6; j++) {
for (int i = 0; i < 6; i++) {
if (num[i] > max) {
max = num[i];
maxpos = i;
}
}
DecSort[j] = max;
max = num[0];
num[maxpos] = Integer.MIN_VALUE;
}
System.out.println("sorted array");
for (int i = 0; i < 6; i++) {
System.out.println(DecSort[i]);
}
當我輸入213、45、1234、765、23、5作為數組時,它輸出:排序后的數組1234765213213213213213
我不確定我的錯誤在哪里,請幫忙!
問題是您正在將max
初始化為num[0]
。 這意味着將永遠找不到數組中小於第一個的任何數字,因為num[i] > max
始終為false
。 您可以通過將max
的初始值設置為Integer.MIN_VALUE
來修復它。
但是,您知道Java標准庫已經具有排序功能。 您可以使用它以升序對數組進行排序,然后以相反的方式打印它:
int num[] = new int[6];
System.out.println("Input 6 numbers: ");
for (int i = 0; i < 6; i++) {
num[i] = Integer.parseInt(br.readLine());
}
Arrays.sort(num);
System.out.println("sorted array");
for (int i = 5; i >= 0; --i) {
System.out.println(num[i]);
}
如果需要的話,我將讓您研究如何將升序數組轉換為降序數組。 ;)
另外,使用NavigableSet
,您甚至可以獲取Java對其進行即時排序:
NavigableSet<Integer> nums = new TreeSet<>();
System.out.println("Input 6 numbers: ");
for (int i = 0; i < 6; i++) {
nums.add(Integer.valueOf(br.readLine()));
}
Integer[] sortedNums = nums.descendingSet().toArray(new Integer[6]);
我只更改了一些代碼:
1-刪除了DecSort數組,因為不需要它。
2-應用氣泡排序降序算法。
3-將中斷條件更改為for ,以便用於任何大小的數組。
看一看:
public void orderDescending() {
int num[] = { 213, 45, 1234, 765, 23, 5 };
// sorted array is descending
int maxpos = 0;
for (int j = 0; j < num.length; j++) {
for (int i = j; i < num.length - 1; i++) {
if (num[i] > num[j]) {
int tempA = num[i];
num[i] = num[j];
num[j] = tempA;
}
}
}
System.out.println("sorted array");
for (int i = 0; i < 6; i++) {
System.out.println(num[i]);
}
}
只需進行一些更改即可完美工作!
可以創建比較器,並且可以控制您的升序和降序。
Comparator<Integer> comparator = new Comparator<Integer>() {
@Override
public int compare(Integer o1, Integer o2) {
return o2.compareTo(o1);
}
};
// option 1
Integer[] array = new Integer[] { 1, 24, 4, 4, 345 };
Arrays.sort(array, comparator);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.