Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1112911
  • 博文数量: 300
  • 博客积分: 37
  • 博客等级: 民兵
  • 技术积分: 772
  • 用 户 组: 普通用户
  • 注册时间: 2012-02-26 04:46
文章分类
文章存档

2017年(4)

2016年(7)

2015年(19)

2014年(72)

2013年(71)

2012年(127)

分类:

2012-10-18 18:33:43

原文地址:快速排序算法 作者:hzami

    快速排序是另外一种采用分而治之策略的排序算法,在平均情况下的时间复杂度也是Θ(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. }

阅读(717) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~