zoukankan      html  css  js  c++  java
  • sort和qsort一些用法的总结

    来自一位学长

    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
    ",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
    ",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]='';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
    ",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;
    }



    版权声明:本文为博主原创文章,未经博主允许不得转载。http://xiang578.top/

  • 相关阅读:
    Silerlight 控制datagrid控件多选时不显示详细信息
    正则表达式限制文本框只能输入数字,小数点,英文字母,汉字
    图片正则表达式
    css最小高度,最大高度important
    让网页变灰色兼容各种浏览器
    edecms v5.7模块管理列表为空没有内容
    统一日志的记录格式,用宏调用printf
    出差
    使窗体在指定窗口的顶层
    C BNF grammar
  • 原文地址:https://www.cnblogs.com/xryz/p/4848094.html
Copyright © 2011-2022 走看看