快速排序的基本思想:
1.选定中心轴
2.将小于中心轴的放到左边
3.将大于中心轴的放到右边
4.分别对左右子序列重复前三步操作
代码如下
#include<iostream>
#include<algorithm>
using namespace std;
int a[1000000];
int qsort(int l,int r)
{
int mid=a[(l+r)/2]; //确定分界线mid
int i=l,j=r;
do{
while(a[i]<mid)
i++; //查找左半部分比中轴大的数据
while(a[j]>mid)
j--; //查找右半部分比中轴小的数据
if(i<=j)
{
swap(a[i],a[j]);
i++;
j--;
}
}while(i<=j);
if(j>l) qsort(l,j);//递归搜索左半部分
if(i<r) qsort(i,r);//递归搜索右半部分
}
int main()
{
int n;
cin>>n;
for(int i=0;i<=n-1;i++)
cin>>a[i];
qsort(0,n-1);
for(int i=0;i<=n-1;i++)
cout<<a[i]<<" ";
return 0;
}
2 利用stl 里面的库 #include sort 函数直接排序
但是不推荐 虽然简便 但是核心思想还是上面的代码
上面的一定需要掌握
代码如下:
#include<iostream>
#include<algorithm>
using namespace std;
int main()
{
int m,a[111];
cin>>m;
for(int i=0;i<m;i++)
{
cin>>a[i];
}
sort(a,a+m);
for(int i=0;i<m;i++)
{
cout<<a[i]<<" ";
}
return 0;
}
58万+

被折叠的 条评论
为什么被折叠?



