sort和qsort一些用法的总结

来源:互联网 发布:淘宝的主营业务有哪些 编辑:程序博客网 时间:2024/06/02 02:01

来自一位学长

qsort排序(从大到小)

#include <stdlib.h>#include <stdio.h>int a[105];int cmp(const void *x,const void *y){    return (*(int*)x)>(*(int*)y);}int main(){    int i, j;    a[0]=8,a[1]=1, a[2]=3, a[3]=-3;    qsort(a,4,sizeof(a[0]),cmp);    for(i=0;i<=3;i++) printf("%d\n",a[i]);    return 0;}

qsort对结构体排序

#include<algorithm>#include<cstring>#include<string>#include<cstdio>#include<stdlib.h>using namespace std;struct DATA{    int a, b;} dt[1005];int cmp(const void *x,const void *y){    return ((DATA*)x)->a-((DATA*)y)->a;}int main(){    int i;    dt[0].a=1, dt[0].b=-1;    dt[1].a=3, dt[1].b=-2;    dt[2].a=-1, dt[2].b=3;    qsort(dt,3,sizeof(dt[0]),cmp);for(i=0;i<3;i++)printf("%d %d\n",dt[i].a,dt[i].b);    return 0;}


qsort对字符排序

#include<stdio.h>#include<string.h>#include<stdlib.h>int cmp(const void *a,const void *b){return strcmp((char *)a,(char *)b);}char s[1000005][205];int main(void){int i,j,n;char ch,temp[205];i=j=0;memset(s,0,sizeof(s));memset(temp,0,sizeof(temp));while(scanf("%c",&ch)!=EOF){if(ch>='a'&&ch<='z') {s[i][j]=ch;j++;}else if(ch>='A'&&ch<='Z') {s[i][j]=ch+32;j++;}else if(j!=0) {s[i][j]='\0';j=0;i++;}}n=i+1;qsort(s,i,sizeof(s[0]),cmp);for(i=0;i<n;i++)if(strcmp(s[i],s[i+1])!=0) printf("%s\n",s[i]);return 0;}


sort对结构体排序

#include<algorithm>#include<cstring>#include<string>#include<cstdio>#include<stdlib.h>using namespace std;struct DATA{    int a, b;} dt[1005];bool cmp(DATA x,DATA y){    return x.a<y.a;}int main(){    int i, j;    dt[0].a=1, dt[0].b=-1;    dt[1].a=3, dt[1].b=-2;    dt[2].a=-1, dt[2].b=3;    sort(dt,dt+3,cmp);    return 0;}


重载sort

#include<algorithm>#include<cstring>#include<string>#include<cstdio>#include<stdlib.h>using namespace std;struct DATA{    int a, b;    bool operator<(const DATA &y)const    {        return a<y.a;    }} dt[1005];int main(){    int i, j;    dt[0].a=1, dt[0].b=-1;    dt[1].a=3, dt[1].b=-2;    dt[2].a=-1, dt[2].b=3;    sort(dt,dt+3);    return 0;}



0 0
原创粉丝点击