📜  双枢轴Quicksort

📅  最后修改于: 2021-05-07 05:04:56             🧑  作者: Mango

众所周知,单个数据透视表快速排序从数组的一端开始获取一个数据透视表并对分区进行分割,因此,所有留给数据透视表的元素均小于或等于该数据透视表,而所有元素都应小于或等于该数据透视表。枢轴大于枢轴。
双枢轴快速排序的想法是采用两个枢轴,一个在阵列的左端,第二个在阵列的右端。左枢轴必须小于或等于右枢轴,因此如有必要,我们将其交换。
然后,我们开始将数组划分为三个部分:在第一部分中,所有元素将小于左枢轴,在第二部分中,所有元素将大于或等于左枢轴,并且还将小于或等于右枢轴,在第三部分中,所有元素都将大于右枢轴。然后,我们将两个枢轴移到它们的适当位置,如下面的栏中所示,然后,我们开始使用此方法对这三个部分进行递归快速排序。

双数据透视快速排序比原始的单数据透视快速排序快一点。但是,当数组已经按照升序或降序排序时,最坏的情况仍然是O(n ^ 2)。
一个例子:

C++


C


Java


Python3


输出:

Sorted array: 8 24 29 38 42 57 75 77