Chinaunix首页 | 论坛 | 博客
  • 博客访问: 120060
  • 博文数量: 32
  • 博客积分: 506
  • 博客等级: 下士
  • 技术积分: 257
  • 用 户 组: 普通用户
  • 注册时间: 2012-07-11 11:06
文章分类

全部博文(32)

文章存档

2012年(32)

分类: C/C++

2012-10-18 11:33:49

    快速排序是另外一种采用分而治之策略的排序算法,在平均情况下的时间复杂度也是Θ(nlgn),但比归并排序有更小的时间常数。它的基本思想是这样的:

点击(此处)折叠或打开

  1. int partition(int start, int end)
  2. {
  3.     从a[start..end]中选取一个pivot元素(比如选a[start]为pivot);
  4.     在一个循环中移动a[start..end]的数据,将a[start..end]分成两半, 使a[start..mid-1]比
  5.     pivot元素小,a[mid+1..end]比pivot元素大,而a[mid]就是pivot元素;
  6.     return mid;  
  7. }
  8. void quicksort(int start, int end)
  9. {
  10.     int mid;
  11.     if (end > start)
  12.     {
  13.         mid = partition(start, end);
  14.         quicksort(start, mid-1);
  15.         quicksort(mid+1, end);
  16.     }
  17. }

阅读(2042) | 评论(0) | 转发(2) |
0

上一篇:归并排序算法

下一篇:函数可重入性学习

给主人留下些什么吧!~~