试图理解Java中的排序
我最近正在经历一些排序算法,包括冒泡排序、选择排序、插入排序、合并排序、堆排序、快速排序等,突然我想到一个问题,当我们使用函数Sort()时在Java或任何其他语言中,它遵循哪种排序算法?对于所有其他语言,排序函数的算法是否相同 例如,这是我的Java代码:试图理解Java中的排序,java,arrays,algorithm,sorting,Java,Arrays,Algorithm,Sorting,我最近正在经历一些排序算法,包括冒泡排序、选择排序、插入排序、合并排序、堆排序、快速排序等,突然我想到一个问题,当我们使用函数Sort()时在Java或任何其他语言中,它遵循哪种排序算法?对于所有其他语言,排序函数的算法是否相同 例如,这是我的Java代码: import java.util.Arrays; public class ArrayDemo { public static void main(String[] args) { int i; int A[
import java.util.Arrays;
public class ArrayDemo {
public static void main(String[] args) {
int i;
int A[] = {2, 1, 9, 6, 4};
for (i = 0; i < A.length ; i++)
{
System.out.println("Number = " + A[i]);
}
// sorting array
Arrays.sort(A);
System.out.println("The sorted int array is:");
for (i = 0; i < A.length ; i++)
{
System.out.println("Number = " + A[i]);
}
}
}
导入java.util.array;
公共类ArrayDemo{
公共静态void main(字符串[]args){
int i;
inta[]={2,1,9,6,4};
对于(i=0;i
我想知道Arrays.sort()使用哪种排序算法对数组A进行排序
谢谢,正如您所看到的,他们使用双数据透视快速排序算法
/**
65 * Sorts the specified array into ascending numerical order.
66 *
67 * <p>Implementation note: The sorting algorithm is a Dual-Pivot Quicksort
68 * by Vladimir Yaroslavskiy, Jon Bentley, and Joshua Bloch. This algorithm
69 * offers O(n log(n)) performance on many data sets that cause other
70 * quicksorts to degrade to quadratic performance, and is typically
71 * faster than traditional (one-pivot) Quicksort implementations.
72 *
73 * @param a the array to be sorted
74 */
75 public static void sort(int[] a) {
76 DualPivotQuicksort.sort(a);
77 }
/**
65*将指定数组按升序进行排序。
66 *
67*实施说明:排序算法是一种双枢轴快速排序
68*弗拉基米尔·亚罗斯拉夫斯基、乔恩·本特利和约书亚·布洛赫。该算法
69*在许多导致其他问题的数据集上提供O(n log(n))性能
70*快速排序可降级为二次性能,通常
71*比传统(单轴)快速排序实现更快。
72 *
73*@param a要排序的数组
74 */
75公共静态无效排序(int[]a){
76.快速排序。排序(a);
77 }
请参见“如果我没有记错的话”,一个基本体数组的快速排序变体,以及一个对象数组的合并排序变体(稳定性,并且由于对象通常在内部实现为指向对象的指针,合并排序应该更快)。@rcgldr中描述了合并排序的变体。