快速排序

tech2025-01-16  8

快速排序的基本思想: 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; }
最新回复(0)