【问题标题】:How to sort an array of random numbers如何对随机数数组进行排序
【发布时间】:2016-08-15 13:09:42
【问题描述】:

我需要创建一个大小为 500 的数组,并且数据是随机分布的,我真的很困惑如何对这个数组进行排序。有人可以帮帮我吗?

随机代码:

import java.util.Random;

public class SortTest {

   public static void main(String[] args) { 

      // create an instance of Random class for random number generation 
      Random random = new Random (1L);

      // begin new scope
      {
      // create an int array of 500 elements
      int[] dataArray = new int[500];

      // populate the array with randomly generated values
      for (int index = 0; index < 500; index++)
        dataArray[index] = random.nextInt();

      // end scope
      }

  }
}

我需要使用 Arrays.sort(dataArray) 吗?还是 Arrays.sort(dataArray, Collections.reverseOrder())?但是我听说有人说那些不是小学课的。

请帮忙!!!谢谢!!

这应该是我的步骤:

  1. 使用 Random 类的 nextInt() 方法创建一个 500 元素的整数数组
  2. 制作此数组的副本,并将其用作对方法进行排序的参数(数组通过 参考)。
  3. 测量执行时间以使用冒泡、选择、插入、 快速排序和归并排序
  4. 使用 Random 类的 nextInt() 方法创建一个包含 5000000 个元素的整数数组。
  5. 制作此数组的副本,并将其用作对方法进行排序的参数(数组通过 参考)。
  6. 测量执行时间以使用冒泡、选择、插入、 快速排序和归并排序。
  7. 测量执行时间以对已排序(按升序)的 500 元素数组进行排序 使用冒泡、选择、插入、快速排序和归并排序。
  8. 测量执行时间以对已经反向排序(按降序)排序 500- 使用冒泡、选择、插入、快速排序和合并排序的元素数组。
  9. 测量执行时间以对已排序(按升序)5000000 个元素进行排序 使用冒泡、选择、插入、快速排序和归并排序的数组。
  10. 测量执行时间以对已经反向排序(按降序)进行排序 5000000- 使用冒泡、选择、插入、快速排序和合并排序的元素数组。
  11. 将您的结果制成表格并评论六种排序算法对输入的敏感性 数据分布

我对 strp 7 和 8 感到困惑,如何对上面分布的数组进行排序。我应该在哪里添加它?我使用了 Arrays.sort() 但打印出来的结果不是按递增顺序排列的。

【问题讨论】:

  • 你可以使用Arrays.sort(dataArray),它会升序排序
  • 你成功使用Arrays.sort(dataArray)了吗?因为它非常简单。除了排序之外,你能澄清一下你问的是什么吗?
  • 当你说“那些不适合小学课堂”时,你的意思是你没有大声使用像Arrays课堂这样的外部代码吗?
  • 引用的重复问题的答案也是关于如何从高到低排序。

标签: java arrays sorting


【解决方案1】:

如果您想了解一种获得随机数排序数组的好方法,这里有一个使用 Java 8 流的简单解决方案:

int[] randoms = Random.ints(500).sorted().toArray();

【讨论】:

    【解决方案2】:

    java.util.Arrays类中使用public static void sort(int[]);这个方法

    Arrays.sort(dataArray);

    更改您的数组声明
    int[] dataArray = new int[500];
    

    ArrayList<Integer> dataArray = new ArrayList<Integer>();
    

    然后您可以应用Collection 类中的sort() 方法对您的数组进行排序。因为 IntegerComparable 类型的 Class。

    public final class java.lang.Integer extends java.lang.Number implements Comparable<java.lang.Integer>
    

    【讨论】:

    • 不,Arrays.sort() 也被重载用于操作原始数据类型。 Here's the implementation for Arrays.sort(int[])
    • 我正在添加此信息。我已经编辑了我的答案,在你中间放了一个downvote。 @4castle
    • 一开始我说的是sort()实际上属于Collections的方法。 @4castle
    • 而且我改成ArrayList后,不知道怎么排序那个数组
    猜你喜欢
    • 2013-01-28
    • 2021-06-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-15
    • 1970-01-01
    相关资源
    最近更新 更多