STL中的sort

来源:互联网 发布:js二维数组的遍历 编辑:程序博客网 时间:2024/05/20 05:45

快速排序,童鞋们应该都知道,所以说,博主今天就告诉大家快速排序的简单中的简单版:使用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就是如此简单,加油,成为一名优秀的编程者!

2 0
原创粉丝点击