【问题标题】:How to sort this array into ascending order?如何对这个数组进行升序排序?
【发布时间】:2018-10-20 17:22:25
【问题描述】:

我想生成一个包含 100 个数字的数组,并找到它们的平均值和总和。我能够做到这一点,但我无法将数字的输出按升序排列。我是 Java 的超级新手。

import java.util.Random;

public class randomNumberGen
{
    public static void main(String [] args)
    {
        Random r=new Random();
        double sum = 0; // is double so to prevent int division later on
        int amount = 100;
        int upperBound = 100;

        for (int i = 0; i < amount; i++){
             int next = r.nextInt(upperBound) + 1; // creates a random int in [1,100]
            System.out.println(next);

            sum += next; // accumulate sum of all random numbers
        }

        System.out.println("Your average is: " + (sum / amount));
        System.out.println("Your sum is: " + (sum));        
    }
}

【问题讨论】:

  • 你的阵列在哪里?

标签: java sorting arraylist


【解决方案1】:

这很容易。但是我在您的代码中没有看到任何数组。我为您创建了一个示例代码。您可以寻求更多帮助。

public static void main(String[] args) {
    SecureRandom random = new SecureRandom(); // it is better to use this library
    double sum = 0; // is double so to prevent int division later on
    int amount = 100;
    int upperBound = 100;
    int[] array = new int[amount]; // create an array with amount size
    for (int i = 0; i < amount; i++) {
        array[i] = random.nextInt(upperBound) + 1; // creates a random int in [1 , upperBound]
        sum += array[i]; // accumulate sum of all random numbers
    }
    Arrays.sort(array); // sort array in default order which is ascending
    System.out.println(Arrays.toString(array)); // toString is a way to print all of array, without iterate it and print it
    System.out.println("Your average is: " + (sum / amount));
    System.out.println("Your sum is: " + sum);
}

【讨论】:

    【解决方案2】:

    有很多不同的排序方法。对于初学者,请从Bubble SortInsertion Sort 开始。插入排序稍微好一些,因为它的平均运行速度略快。

    【讨论】:

      【解决方案3】:

      我提议使用一种特殊的集合在内部对数字进行排序,而不使用任何一种排序算法(例如我们PriorityQueue):

      public static void main(String[] args) {
          final int amount = 100;
      
          Random random = new SecureRandom();
          Queue<Integer> queue = new PriorityQueue<>(amount, Comparator.naturalOrder());  // Comparator.reverseOrder() for reverse order
          int sum = 0;
      
          for (int i = 0; i < amount; i++) {
              int val = random.nextInt(100) + 1;
              sum += val;
              queue.add(val);
          }
      
          System.out.println(Arrays.toString(queue.toArray()));
          System.out.println("Your average is: " + (double)sum / amount);
          System.out.println("Your sum is: " + sum);
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2010-09-10
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-03-08
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多