如何比较第一个元素和最后一个元素按降序排序数组

时间:2017-07-01 08:03:08

标签: java arrays algorithm sorting

我还是学生,我在Java中有一个作业,我必须对一个数组进行排序,该数组比较最后一个元素的第一个元素,直到数组从最高到最低排序。我已经做了一些算法,但它似乎跳过交换号2并继续到swap3。该程序应该像这样运行。

  

10 ,3,7,15, 9

     

10 ,3,7, 15 ,9

     

15 ,3, 7 ,10,9 - 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?

1 个答案:

答案 0 :(得分:3)

外部循环从第一个元素到结束。

内循环从最后一个元素到外循环的索引。

在内循环运行后打印数组的内容。 也就是说,每次外循环迭代时都会打印一次内容。 请记住,在内循环期间, 可以发生多次掉期。 例如,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]

这将打印:

this.Text