此数组对Ascending中的数字进行排序并打印输出。我想把它改成下降,但我无法弄清楚..我尝试将+更改为 - 但它似乎没有用。有人可以告诉我如何做到这一点吗?
public class ArraysSorting {
public static void main(String[] args) {
int [] scores = { 5,8,2,9,3};
sortArrayDesc (scores, scores.length);
}
public static void sortArrayDesc( int [] list, int listLength) {
int index;
int smallestIndex;
int minIndex;
int temp;
for (index = 0; index < listLength - 1; index++) {
smallestIndex = index;
for (minIndex = index + 1;
minIndex < listLength; minIndex++)
if (list[minIndex] < list[smallestIndex])
smallestIndex = minIndex;
temp = list[smallestIndex];
list[smallestIndex] = list[index];
list[index] = temp;
}
//display data after sorting
System.out.print("sorted array");
for (index=0; index<listLength; index++) {
System.out.print(list[index] + ",");
}
}
}
答案 0 :(得分:0)
我建议你查看关于&#34;冒泡排序&#34;的文章,这与你在这里做的非常接近。然后,继续学习其他排序算法的工作原理。您通常不希望使用n平方排序算法。
要以相反的顺序进行排序,您可能希望使用smallestIndex
变量来存储最大的索引。更改其中的名称,并使用>
行上的if (list[minIndex] < list[smallestIndex])
运算符查找最大数字。然后,您将在第一个列表位置存储最大数字,在最后一个列表位置存储最小数字。
更新的循环如下所示:
for (index = 0; index < listLength - 1; index++)
{
biggestIndex = index;
for (minIndex = index + 1; minIndex < listLength; minIndex++)
if (list[minIndex] > list[biggestIndex])
biggestIndex = minIndex;
temp = list[biggestIndex];
list[biggestIndex] = list[index];
list[index] = temp;
}
答案 1 :(得分:0)
修改此代码以降序排序数组的一种简单方法是将比较运算符从小于(&lt;)更改为大于(&gt;)。
您的代码:
if (list[minIndex] < list[smallestIndex])
更改为:
if (list[minIndex] > list[smallestIndex])
您还应该更改变量命名,否则它没有意义。
答案 2 :(得分:0)
我刚做了一些修改。更改了变量名称和重要部分
if(list [maxIndex]&gt; list [largestIndex])//将小于号的符号改为大于
public class ArraysSorting {
public static void main(String[] args) {
int [] scores = { 5,8,2,9,3};
sortArrayDesc (scores, scores.length);
}
public static void sortArrayDesc( int [] list, int listLength) {
int index;
int largestIndex;
int maxIndex;
int temp;
for (index = 0; index < listLength - 1; index++) {
largestIndex = index;
for (maxIndex = index + 1;
maxIndex < listLength; maxIndex++)
if (list[maxIndex] > list[largestIndex])
largestIndex = maxIndex;
temp = list[largestIndex];
list[largestIndex] = list[index];
list[index] = temp;
}
//display data after sorting
System.out.print("sorted array");
for (index=0; index<listLength; index++) {
System.out.print(list[index] + ",");
}
}
}
答案 3 :(得分:0)
听起来你想要一个&#34; for循环&#34;反向运行:
for (i = listLength; i>0; i--) {
System.out.print(list[i] + ",");
}
你需要从
开始list[listLength]
并递增,直到到达列表/数组的开头
list[0].