繁体   English   中英

如何比较首个元素和最后一个元素以降序对数组进行排序

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM