[算法总结]partition (quicksort)

Posted 冬日焰火

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[算法总结]partition (quicksort)相关的知识,希望对你有一定的参考价值。

private int partition(int[] nums, int lo, int hi) {
        if (lo >= hi) {
            return lo;
        }
        int i = lo;
        int j = hi + 1;
        int v = nums[lo];
        while (true) {
            while (nums[++i] < v)
                if (i == hi) break;
            while (nums[--j] > v)
                if (j == lo) break;
            if (i >= j) {
                break;
            }
            int tmp = nums[i];
            nums[i] = nums[j];
            nums[j] = tmp;
        }
        nums[lo] = nums[j];
        nums[j] = v;
        return j;
    }

lo和hi都是inclusive的。 返回的数组中,index小于j的数都小于等于j,index大于j的数都大于等于j

以上是关于[算法总结]partition (quicksort)的主要内容,如果未能解决你的问题,请参考以下文章

排序算法

快速排序算法(Cormen)给出了 ***

实现 partition_unique 和 stable_partition_unique 算法

STL知识点总结

《STL源码剖析》相关面试题总结

[算法]数组的partition调整