今天忙里偷闲~重新学习了下快排~这个代码势必要能做到分分钟写出来~而且真的超级简单
· 不稳定排序
· 分治策略
该方法的基本思想是:
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加油↖(^ω^)↗