快速排序是另外一种采用分而治之策略的排序算法,在平均情况下的时间复杂度也是Θ(nlgn),但比归并排序有更小的时间常数。它的基本思想是这样的:
- int partition(int start, int end)
- {
- 从a[start..end]中选取一个pivot元素(比如选a[start]为pivot);
- 在一个循环中移动a[start..end]的数据,将a[start..end]分成两半, 使a[start..mid-1]比
- pivot元素小,a[mid+1..end]比pivot元素大,而a[mid]就是pivot元素;
- return mid;
- }
- void quicksort(int start, int end)
- {
- int mid;
- if (end > start)
- {
- mid = partition(start, end);
- quicksort(start, mid-1);
- quicksort(mid+1, end);
- }
- }
阅读(2077) | 评论(0) | 转发(2) |