快速排序,童鞋们应该都知道,所以说,博主今天就告诉大家快速排序的简单中的简单版:使用STL中的sort完成!
首先,博主先上快速排序的代码,让不知道的童鞋们看看:
#include<stdio.h>
#include<stdlib.h>
int a[10000];
void qsort(int x,int y){
int u,v,m,t;
m=a[(x+y)/2];
u=x;v=y;
while(u<v){
while(u<=v && a[u]<m)u++;
while(u<=v && a[v]>m)v--;
if(u<=v){
t=a[u];a[u]=a[v];a[v]=t;
u++;v--;
}
}
if(x<v)qsort(x,v);
if(u<y)qsort(u,y);
}
int main(){
int i,j,k,m,n,max=0;
scanf("%d",&n);
for(i=1;i<=n;i++)
scanf("%d",&a[i]);
qsort(1,n);
for(i=1;i<=n;i++)
printf("%d%c",a[i],i==n?'\n':' ');
return 0;
}
接下来,博主就告诉大家sort如何使用吧:
首先,使用sort需要加头文件:algorithm,注意,只有c++可以使用!
接下来,就是这样:这是从小到大!这是默认的
#include<algorithm>
#include<cstdio>
#include<cstdlib>
#include<cmath>
#include<cstring>
#include<iostream>
using namespace std;
int a[10000];
int main(){
int i,j,k,m,n,max=0;
scanf("%d",&n);
for(i=1;i<=n;i++)
scanf("%d",&a[i]);
sort(a+1,a+n+1);
for(i=1;i<=n;i++)
printf("%d ",a[i]);
return 0;
}
注意,如果a数组是从0开始存的话,那么
sort变为:
sort(a,a+n);
当然,如果排序有别的需求的话,可以这样:
这是从大到小排序:
#include<algorithm>
#include<cstdio>
#include<cstdlib>
#include<cmath>
#include<cstring>
#include<iostream>
using namespace std;
int a[10000];
int cmp(int x,int y){
return x>y;
}
int main(){
int i,j,k,m,n,max=0;
scanf("%d",&n);
for(i=1;i<=n;i++)
scanf("%d",&a[i]);
sort(a+1,a+n+1,cmp);
for(i=1;i<=n;i++)
printf("%d ",a[i]);
return 0;
}
如果是要用结构体排序的话
这样:
#include<algorithm>
#include<cstdio>
#include<cstdlib>
#include<cmath>
#include<cstring>
#include<iostream>
using namespace std;
struct node{
int x, y;
}a[10000];
int cmp(node x,node y){
return x.x<y.x;
}
int main(){
int i,j,k,m,n,max=0;
scanf("%d",&n);
for(i=1;i<=n;i++)
scanf("%d",&a[i].x);
sort(a+1,a+n+1,cmp);
for(i=1;i<=n;i++)
printf("%d ",a[i].x);
return 0;
}
就是这样,当然,注意cmp里面的定义和你需要排序的对象是一样的变量!
sort就是如此简单,加油,成为一名优秀的编程者!