试图理解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[

我最近正在经历一些排序算法,包括冒泡排序、选择排序、插入排序、合并排序、堆排序、快速排序等,突然我想到一个问题,当我们使用函数Sort()时在Java或任何其他语言中,它遵循哪种排序算法?对于所有其他语言,排序函数的算法是否相同

例如,这是我的Java代码:

 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中描述了合并排序的变体。