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()的定义一致,都是指向末元素下一个位置的迭代器。

posted @ 2012-12-10 19:43  hilbertan  阅读(180)  评论(0编辑  收藏  举报