当前位置: 首页 > 知识库问答 >
问题:

使用数组库对整型数组进行合并排序

颜德馨
2023-03-14

我想使用功能

public static void sort(Object[] a)

对一个int数组进行排序,但我不确定如何进行,这样我就可以确定它使用的是合并排序,而不是任何其他排序。

以下是Java文档:https://docs.oracle.com/javase/7/docs/api/java/util/Arrays.html

下面是我认为正确的函数实现,以便使用合并排序。

 public static void main(String[] args) {
     int arr[] = { 3, 2, 4, 1, 99, 30, 5, 3 };
     Arrays.sort(arr);
 }

这是正确的吗?此外,我想指定一个索引,从哪里开始排序等

sort(Object[] a, int fromIndex, int toIndex)

如何确保编写代码,使其使用合并排序而不是快速排序。

共有3个答案

耿运浩
2023-03-14

在封装在LegacyMergeSort类中的Arrays实用程序类中有一个遗留合并排序实现。

正如默认情况下提到的,rrays.sort不会使用它。所以你需要指示jvm使用它。这是根据Java文档:

  Old merge sort implementation can be selected (for
  compatibility with broken comparators) using a system property.

系统属性是java。util。数组。useLegacyMergeSort=true,您可以使用java-Djava进行设置。util。数组。useLegacyMergeSort=true jar或使用系统。setProperty(“java.util.Arrays.useLegacyMergeSort”,true)

秦凯旋
2023-03-14

不幸的是,rrays.sort两者都使用!看起来,对于您的整数实现,它使用快速排序。

https://cafe.elharo.com/programming/java-programming/why-java-util-arrays-uses-two-sorting-algorithms/

燕鸿波
2023-03-14

数组。排序方法通常对基元数组使用快速排序,对对象数组使用合并排序。

因此,为了使用合并排序,我想你必须将你的数组声明为整数对象数组,例如。

// Unsorted array
Integer[] a = { 2, 6, 3, 5, 1 };
 类似资料:
  • 对于这个项目,我得到了一个字符串数组和一个整数数组。int[1]是字符串[1]的排名。我需要使用mergesort按1到n的顺序对int数组进行排序,我在下面已经完成了这项工作。但是当int数组被移动时,我还需要切换字符串数组的位置,以便它们都被排序,如果这有意义的话?我不知道我的编码有什么问题,甚至我的想法是否真的有效,但我一直在stringSorted[k]=stringRight[j]上得到

  • 问题内容: 是否可以使用排序数组,然后再将另一个相关数组定位为与排序数组相同,例如: 从这一点出发,我想对数组进行排序,这样,如果“人”有一个cellNo“ x”,则在对数组进行排序后,他将具有相同的“ cellNo”“ x” 问题答案: 我会采用另一种方法: 创建一个新对象: 创建一个比较器: 打电话一对阵列

  • 问题内容: 我想对整数的arraylist的arraylist进行排序,需要帮助吗? 我被告知,我需要实现比较器或可比对象,然后使用collection.sort对列表列表进行排序… 问题答案: 没有错误检查空列表,但是这里是。 使用Java 8,它变得更加简洁:

  • 问题内容: 为什么我的打印输出数组未在以下代码中排序? 问题答案: 您需要两个循环来实现Bubble Sort。 样例代码:

  • 我有一个对象类产品,如下所示 我想根据价格对产品进行分类。我的数组是 我做了 但问题是部分在error.It不能使用方法。我希望我的arrayList按照product.The价格的整数排序value.But当我将其更改为字符串类型时,我得到了,但它仍然未排序,因为字符串type.Please帮助我

  • 我希望根据记录的整数值降序排序: