plina

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::
  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)。

posted on 2017-04-27 15:37  plina  阅读(125)  评论(0编辑  收藏  举报