首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何将数组按降序排序,比较第一个元素和最后一个元素

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

Stack Overflow用户
提问于 2017-07-01 08:03:08
回答 1查看 1.3K关注 0票数 2

我仍然是一名学生,我在Java中有一项任务,我必须对数组进行排序,将第一个元素与最后一个元素进行比较,直到数组从最高到最低排序。我已经做了一些算法,但是它似乎跳过了交换号2,然后转到了swap3。程序应该这样运行。

10,3,7,15,9 10,3,7,15,9 15,3,7,10,9- swap1 153,7,10,9 15,3,7,10,9 15,9,7,10,3- swap2 107,9,3 7,9,3 79,3 15,10,9,73 - swap3 15、10、9、7、3

下面是我的算法:

代码语言:javascript
复制
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的操作呢?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-07-01 08:21:57

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

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

在内部循环运行后打印数组的内容。也就是说,每次外部循环的迭代都要打印一次内容。请记住,在内部循环期间,可能会发生多个交换。例如,当f=1发生两次掉期。

如果您想在每个交换后打印状态,那么就在内部循环中这样做:

代码语言:javascript
复制
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));
    }
  }
}

这将打印:

代码语言:javascript
复制
[15, 3, 7, 10, 9]
[15, 9, 7, 10, 3]
[15, 10, 7, 9, 3]
[15, 10, 9, 7, 3]
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44858733

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档