[英]How to sort an array in descending order comparing the first element and the last
我还是一个学生,我在Java中有一个作业,我必须对一个数组进行排序,该数组将比较最后一个元素中的第一个元素,直到该数组从最高到最低进行排序。 我已经做了一些算法,但似乎它会跳过交换编号2并继续进行swap3。 该程序应这样运行。
10,3,7,15,9
10,3,7,15,9
15,3,7,10,10 - swap1
15,3,7,10%,9
15,3,7,10%,9
15,9,7,10,3 - swap2
15,10,7,9,3-
15,10,7,9,3-
15,10,7,9,3-
15,10,9,7,3 - swap3
15,10,9,7,3
因此,这是我的算法:
public static void main(String[] args) {
int array[] = {10,3,7,15,9};
int f;
int l;
int temp;
System.out.println("Sorting array first and last elements");
for (f = 0; f < array.length; f++)
{
for (l = 4; l > f; l--)
{
if (array[f] < array[l])
{
temp = array[l];
array[l] = array[f];
array[f] = temp;
}
}
System.out.println("sorting....");
for (int c = 0; c < array.length; c++)
System.out.print(array[c] + ",");
}
System.out.println("sorted");
}
输出为:
排序数组的第一个和最后一个元素
排序....
15,3,7,10,9,排序....
15,10,7,9,3,排序....
15,10,9,7,3,排序....
15,10,9,7,3,排序....
15,10,9,7,3,整理
它会排序,但会跳掉交换号2并继续进行到交换号3。我如何正确地执行此操作,以便输出显示而不跳出交换号2?
外循环从第一个元素到最后一个元素。
内循环从最后一个元素开始直到外循环的索引。
内部循环运行后,您将打印数组的内容。 也就是说,您在外循环的每次迭代中仅打印一次内容。 请记住,在内部循环期间,可能会发生多次交换。 例如,当f=1
时发生两次交换。
如果要在每次交换后打印状态,请在内部循环中执行以下操作:
for (f = 0; f < array.length; f++) {
for (l = array.length - 1; l > f; l--) {
if (array[f] < array[l]) {
temp = array[l];
array[l] = array[f];
array[f] = temp;
System.out.println(Arrays.toString(array));
}
}
}
这将打印:
[15, 3, 7, 10, 9]
[15, 9, 7, 10, 3]
[15, 10, 7, 9, 3]
[15, 10, 9, 7, 3]
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.