QuickSort

  public static void quickSort(int[] a, int begin, int end)
        {
            int i = begin;
            int j = end;
            int baseData = a[i];
            while (i < j)
            {
                while (a[j] >= baseData && j > i)
                    j--;
                if (j > i)
                {
                    a[i] = a[j];
                    i++;
                    while (a[i] <= baseData && j > i)
                        i++;
                    if (j > i)
                    {
                        a[j] = a[i];
                        j--;
                    }
                }
                a[i] = baseData;
            }

            if (i - 1 > begin) quickSort(a, begin, i - 1);
            if (j + 1 < end) quickSort(a, j + 1, end);

        }

选择基准数据,以基准数据为轴分为左边数据(都比基准小),右边数据(都比基准大)。

然后递归分别对左边数据右边数据进行排序。

快速排序的平均时间复杂性为O(nlogn)。

原文地址:https://www.cnblogs.com/lemonP/p/6774543.html