简体   繁体   English

如何将此数组按升序排序?

[英]How to sort this array into ascending order?

I would like to generate an array of 100 numbers and find their average and sum.我想生成一个包含 100 个数字的数组并找到它们的平均值和总和。 I am able to do this but I am not able to get the output of numbers into ascending order.我能够做到这一点,但我无法将数字的输出按升序排列。 I am super new to Java.我是 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));        
    }
}

it is very easy.这很容易。 however I didn't see any array in your code.但是我在您的代码中没有看到任何数组。 I create an example code for you.我为您创建了一个示例代码。 you can ask for more help.你可以寻求更多帮助。

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);
}

There are a lot of different sorting methods.有很多不同的排序方法。 For a beginner start with either Bubble Sort or Insertion Sort .对于初学者,可以从冒泡排序插入排序开始 Insertion Sort is slightly better as on average it runs slightly faster.插入排序稍好一些,因为平均而言它运行得稍快一些。

I offer to use one of special collections to sort numbers internally, without using one of sorting algorithms (eg us PriorityQueue ):我提议使用一种特殊集合在内部对数字进行排序,而不使用一种排序算法(例如我们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);
}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

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