您的位置:首页 > 其它

快排

2015-08-02 16:42 239 查看
今天忙里偷闲~重新学习了下快排~这个代码势必要能做到分分钟写出来~而且真的超级简单

· 不稳定排序

· 分治策略

该方法的基本思想是:

1.先从数列中取出一个数作为基准数。

2.分区过程,将比这个数大的数全放到它的右边,小于或等于它的数全放到它的左边。

3.再对左右区间重复第二步,直到各区间只有一个数。

#include <iostream>
using namespace std;

void quicksort(int a[],int,int);
int main()
{
int a[]={34,65,12,43,67,5,78,10,3,70},k;
int len = sizeof(a)/sizeof(int);
cout<<"the original:";
for (k=0;k<len;k++)
{
cout<<a[k]<<",";
}
cout<<endl;

quicksort(a,0,len-1); //len-1

cout<<"the sorted:";
for (k=0;k<len;k++)
{
cout<<a[k]<<",";
}
cout<<endl;

system("pause");
}

void quicksort(int a[],int l,int r)
{
if (l<r)
{
int i=l,j=r,x=a[l];
while (i<j)
{
while (a[j]>=x && i<j)
j--;          //从右向左,如果大于X,j - -
if (i<j)
a[i++]=a[j];
while (a[i]<x && i<j)
i++;
if (i<j)
a[j--]=a[i];
}
a[i]=x;                         //勿忘
quicksort(a,l,i-1);
quicksort(a,i+1,r);
}
}


keer加油↖(^ω^)↗
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: