三路快排

 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 }

 

posted @ 2020-03-30 18:59  Jinxiaobo0509  阅读(142)  评论(0)    收藏  举报