快速排序(Quicksort)是对冒泡排序的一种改进,简称快排
最主要的代码是:
void qsort(int l,int r){
int i,j,k,m;
i=l; j=r; m=x[(i+j)/2];
do{
while (x[i]<m) i++;
while (x[j]>m) j--;
if (i<=j){
k=x[i]; x[i]=x[j]; x[j]=k;
i++; j--;
}
}while (i<=j);
if (l<j) qsort(l,j);
if (i<r) qsort(i,r);
}
给个模板:
#include<bits/stdc++.h>
using namespace std;
int x[10010];
void qsort(int l,int r){
int i,j,m;
i=l; j=r; m=x[(i+j)/2];
do{
while (x[i]<m) i++;
while (x[j]>m) j--;
if (i<=j){
swap(x[i],x[j]);
i++; j--;
}
}while (i<=j);
if (l<j) qsort(l,j);
if (i<r) qsort(i,r);
}
int main(){
int n,i,j;
cin >> n;
for (i=1;i<=n;i++) cin >> x[i];
qsort(1,n);
for (i=1;i<=n;i++) cout << x[i] << ' ';
return 0;
}
654

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



