三路快排

Posted yuhong1103

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了三路快排相关的知识,希望对你有一定的参考价值。

 1 void partition(int arr[], int l, int r, int num)//三路快排
 2 {
 3     int less = l - 1;
 4     int more = r + 1;
 5     int cur = 0;
 6     while (cur < more)
 7     {
 8         if (arr[cur] < num)//左边交换,直接下一个数
 9         {
10             swap(arr[++less], arr[cur++]);
11         }
12         else if (arr[cur] > num)// 右边交换,注意交换之后还是看当前位置的数
13         {
14             swap(arr[--more], arr[cur]);
15         }
16         else  //等于这个数,直接下一个数
17         {
18             cur++;
19         }
20     }
21     return;
22 }

 

以上是关于三路快排的主要内容,如果未能解决你的问题,请参考以下文章

快排,随机快排,双路快排,三路快排的理解

快排之三路快排

快排之三路快排

三路快排,堆排序

leetcode 75 Sort Colors 计数排序,三路快排

《算法》第五章部分程序 part 2