【发布时间】:2019-12-01 23:20:16
【问题描述】:
我实现了一个选择排序来对随机整数数组进行排序。我希望用户在升序或降序之间进行选择。升序排序完美无缺,但降序却不行。这是我的选择排序的样子:
public String selection(int[] array,int num,String order) {
String output = "";
int min;
// This is the descending selection sort
if (order == "desc") {
for (int i = num - 1; i >= 0; i--) {
// Assume first element is min
min = i;
for (int j = i + 1; j < num; j++) {
if (array[j] < array[min]) {
min = j;
}
}
if (min != i) {
final int temp = array[i];
array[i] = array[min];
array[min] = temp;
}
output = output + Integer.toString(array[i]) + "\n";
}
} // This is the ascending selection sort
else {
for (int i = 0; i < num; i++) {
// Assume first element is min
min = i;
for (int j = i + 1; j < num; j++) {
if (array[j] < array[min]) {
min = j;
}
}
if (min != i) {
final int temp = array[i];
array[i] = array[min];
array[min] = temp;
}
output = output + Integer.toString(array[i]) + "\n";
}
}
return(output.trim());
}
我看到了一些与我类似的问题,尽管我看到的所有问题都没有像这样设置它们的选择排序,因此我无法实施他们的解决方案。
【问题讨论】:
-
如果最小升序排序有效,也许使用相同的循环结构并更改逻辑以测试最大值。看起来您的降序 for 循环中的逻辑不正确。
-
Arrays.sort(array) 或 Arrays.sort(array, Collections.reverseOrder());数组有一个长度,array.length,所以不要传入。
-
开头使用“==”比较字符串错误。请改用 equals 方法。然后阅读minimal reproducible example 并清楚地描述确切的问题。 “不工作”不是工作问题描述。
标签: java arrays sorting selection