zoukankan      html  css  js  c++  java
  • 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)。

  • 相关阅读:
    好元素(good)
    三条线 (Standard IO)
    计数排序-自然顺序Comparable
    贪心算法之田忌赛马
    bzoj3400
    bzoj1704
    CF Round #456 (Div. 2)
    LA3029
    bzoj3000
    bzoj3623
  • 原文地址:https://www.cnblogs.com/lemonP/p/6774543.html
Copyright © 2011-2022 走看看