C++笔记121211
今天没事用C写了下快排。
C++泛型算法库里有sort(),因此已经很少自己写了。
1 #include <stdbool.h> 2 3 /* QuickSort Algorithim */ 4 void QuickSort(int *begin, int *end) 5 { 6 if(begin == end)return; 7 int *left = begin, *right = end-1; 8 int tmp; //for swap; 9 10 bool L2R = false; //search direction 11 12 while(1) 13 { 14 while(*left <= *right && left < right) 15 { 16 if(!L2R)--right; 17 else ++left; 18 } 19 if(left == right)break; 20 else 21 { 22 tmp = *right; 23 *right = *left; 24 *left = tmp; 25 L2R = !L2R; 26 } 27 } 28 29 QuickSort(begin,left); 30 QuickSort(right+1,end); 31 }
这里begin和end的定义和C++ Algorithm中sort()的定义一致,都是指向末元素下一个位置的迭代器。