Chinaunix首页 | 论坛 | 博客
  • 博客访问: 60162
  • 博文数量: 40
  • 博客积分: 1607
  • 博客等级: 上尉
  • 技术积分: 382
  • 用 户 组: 普通用户
  • 注册时间: 2009-12-09 16:35
文章分类

全部博文(40)

文章存档

2011年(1)

2010年(30)

2009年(9)

我的朋友

分类: C/C++

2009-12-21 12:47:31

快速排序是利用分治的思想对冒泡排序的一种改进。它的基本思想是:通过一遍排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一不部分的所有数据都要小,然后再按次方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。

下面是我的代码,不做赘述,有疑问欢迎留言,欢迎讨论。


#include <iostream>
using namespace std;

template<class T>
int position(T data[],int left,int right)
{
T bound = data[right];
int i = left-1;
T tmp;
for (int j = left; j != right; ++j) {
if(data[j] <= bound){
i++;
tmp = data[i];
data[i] = data[j];
data[j] = tmp;
}
}
i++;
tmp = data[i];
data[i] = data[right];
data[right] = tmp;

return i;
}

template <class T>
void quicksort(T data[], int left, int right)
{
if(left < right){
int bound = position(data,left,right);
quicksort(data,left,bound-1);
quicksort(data,bound+1,right);
}
}
int main()
{
int arr[19] = {1,2,3,4,4,5,5,6,6,3,3,5,3,3,4,7,2,5,1};
quicksort(arr,0,18);
for(int i = 0; i != 19; ++i)
cout<<arr[i]<<endl;
return 0;
}


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