快速排序原地分区源码

 1 #include <utility>
 2 using std::swap;
 3  
 4 int partition(int* array, int left, int right)
 5 {
 6         int index = left;
 7         int pivot = array[index];       
 8         swap(array[index], array[right]);
 9         for (int i=left; i<right; i++)
10         {
11                 if (array[i] > pivot)    // 降序
12                         swap(array[index++], array[i]);
13         }
14         swap(array[right], array[index]);
15         return index;
16 }
17  
18 void qsort(int* array, int left, int right)
19 {
20         if (left >= right) 
21                 return;
22         int index = partition(array, left, right);
23         qsort(array, left, index - 1);
24         qsort(array, index + 1, right);
25 }
View Code
没有梦想,何谈远方
原文地址:https://www.cnblogs.com/zyue/p/3307090.html