精华内容
下载资源
问答
  • 1、问题 当时在CRM的客户列表中,拉取客户所属...起初以为代码中没有指定排序规则,随后在相应的代码处增加字段排序,以其中一处的代码如例: public List<MemberPO> queryCompanyAllMemberIds() { Q..

    1、问题

    在个人的开发工作中,遇到问题:当时在CRM的客户列表中,拉取客户所属人下拉框功能时,发现系统加载所有用户名称名单,如下图。

    错误图
    解决前原图

     问题来了,业务员名称在下拉框的列表中,并没有按照正常惯例以拼音正序进行排序,尤其时名单较多时,不易找到目标名称,影响用户的使用体验。

    2、排查

    起初以为代码中没有指定排序规则,随后在相应的代码处增加字段排序,以其中一处的代码如例:

        public List<MemberPO> queryCompanyAllMemberIds() {
            QueryWrapper<MemberPO> queryWrapper = new QueryWrapper();
            queryWrapper.orderByAsc("name_cn");
            List<MemberPO> memberPOList = memberMapper.selectList(queryWrapper).stream().collect(Collectors.toList());
            return memberPOList;
        }

    将对应的SQL在数据库执行,运行后,依然没有生效。

    经查询资料,发现问题在于字段的字符集。当前的整个数据库字符集默认是utf8,当需要对有汉字的字段进行拼音排序时(特别涉及到类似于名字这样的字段时),默认无法直接通过Order By关键字正确排序。

    如果是字符集是GBK时,可以直接通过汉字的拼音排序。

    3、解决

    知道问题本质原因后,修改代码后代码如下:

        public List<MemberPO> queryCompanyAllMemberIds() {
            QueryWrapper<MemberPO> queryWrapper = new QueryWrapper();
            queryWrapper.last("ORDER BY CONVERT ( name_cn USING gbk ) ASC");
            List<MemberPO> memberPOList = memberMapper.selectList(queryWrapper).stream().collect(Collectors.toList());
            return memberPOList;
        }

    重启后,效果图如下

    解决后效果图
    解决后效果图

     

    4、引申

    如果哪天出现需要按照汉字笔画进行排序怎么办?

    MySQL不支持汉字笔画排序的,基本都是按照自然语言来排序的。

    但是可以变换一下思路,比如:

    首先新建一个表,表中存姓氏和笔画数,然后在目标表中添加一个存笔画的字段,这样搜索的时候就可以按照笔画来排序了。

    展开全文
  • 但是奖品有限,所以它需要给这些会员做一个排序,然后将名单输出来。排序规则是,先按积分排序,如果会员的积分相同则按他的ID排序,因为ID号小则表示他注册的时间早。 现在某超市有每个会员的ID(ID保证...

    时间限制:1 秒

    内存限制:32 兆

    特殊判题:

    提交:967

    解决:413

    题目描述:

    元旦佳节快到了,超市A想要给会员一些奖品。但是奖品有限,所以它需要给这些会员做一个排序,然后将名单输出来。排序的规则是,先按积分排序,如果会员的积分相同则按他的ID排序,因为ID号小则表示他注册的时间早。
    现在某超市有每个会员的ID(ID保证不重复)、积分,它想要请你帮忙给排个序。

    输入:

    输入有多组数据。
    每组第一行输入n(1<=n<=1000),m(1<=m<=50),n表示会员个数,m表示奖品个数;之后N行分别是两个整数id和s,id为这个会员的ID,s代表了这个会员的积分。

    输出:

    对每组输入输出min(m,n)个获奖的会员ID(按积分降序输出,如果积分相同按ID升序输出),每个会员ID一行。

    样例输入:
    5 3
    1 5
    2 10
    3 3
    4 20
    5 2
    样例输出:
    4
    2
    1

    代码:

    #include <stdio.h>
    #include <stdlib.h>
     
    #define N 1000
    #define M 50
     
    struct node {
        int id;
        int score;
    } a[N];
     
    int cmp(const void *a, const void *b)
    {
        struct node *c = (struct node *)a;
        struct node *d = (struct node *)b;
        if (c->score != d->score)
            return d->score - c->score;
        else
            return c->id - d->id;
    }
     
    int main(void)
    {
        int n, m, i;
     
        while (scanf("%d%d", &n, &m) != EOF)
        {
            for(i=0; i<n; i++)
                scanf("%d%d", &(a[i].id), &(a[i].score));
            qsort(a, n, sizeof(a[0]), cmp);
     
            for (i=0; i<((n<m)?n:m); i++)
                printf("%d\n", a[i].id);
        }
     
        return 0;
    }
    /**************************************************************
        Problem: 1346
        User: liangrx06
        Language: C
        Result: Accepted
        Time:100 ms
        Memory:920 kb
    ****************************************************************/


    转载于:https://www.cnblogs.com/liangrx06/p/5083787.html

    展开全文
  • 会员积分排序

    千次阅读 2013-12-02 12:03:15
    题目1346:会员积分排序 ...但是奖品有限,所以它需要给这些会员做一个排序,然后将名单输出来。排序规则是,先按积分排序,如果会员的积分相同则按他的ID排序,因为ID号小则表示他注册的时间早。 现在某超市有每
    
    题目1346:会员积分排序
    

    时间限制:1 秒

    内存限制:32 兆

    特殊判题:

    提交:717

    解决:295

    题目描述:

    元旦佳节快到了,超市A想要给会员一些奖品。但是奖品有限,所以它需要给这些会员做一个排序,然后将名单输出来。排序的规则是,先按积分排序,如果会员的积分相同则按他的ID排序,因为ID号小则表示他注册的时间早。
    现在某超市有每个会员的ID(ID保证不重复)、积分,它想要请你帮忙给排个序。

    输入:

    输入有多组数据。
    每组第一行输入n(1<=n<=1000),m(1<=m<=50),n表示会员个数,m表示奖品个数;之后N行分别是两个整数id和s,id为这个会员的ID,s代表了这个会员的积分。

    输出:

    对每组输入输出min(m,n)个获奖的会员ID(按积分降序输出,如果积分相同按ID升序输出),每个会员ID一行。

    样例输入:
    5 3
    1 5
    2 10
    3 3
    4 20
    5 2
    样例输出:
    4
    2
    1
    
    
    #include<iostream>
    #include<algorithm>
    #include<vector>
    using namespace std;
     
    typedef struct
    {
        int id;
        int grade;
    }N;
    bool cmp(N a,N b)
    {
        if(a.grade!=b.grade)return a.grade>b.grade;
        else return a.id<b.id;
    }
    int min(int a,int b)
    {
        if(a<=b)return a;
        else return b;
    }
    int main()
    {
        N t;
        int n,m,i;
        vector<N> v;
        while(cin>>n>>m && n)
        {
            m=min(n,m);
            while(n--)
            {
                cin>>t.id>>t.grade;
                v.push_back(t);
            }
            sort(v.begin(),v.end(),cmp);
            for(i=0;i<m; ++i)
               cout<<v[i].id<<endl;
            v.clear();
        }
        return 0;
    }
    /**************************************************************
        Problem: 1346
        User: 3011216016
        Language: C++
        Result: Accepted
        Time:290 ms
        Memory:1520 kb
    ****************************************************************/


    展开全文
  • 最终排序

    2018-03-21 15:36:41
    现在有一份名单记录各个队伍的ID和做出的题目数,需要你写一个程序,产生最终的排名。为了简化题目,这里的排名规则为:做出题目数量多的队伍排在前面,如果题数相等,保持输入时的相对顺序不要改变。 Input 1...

    Problem Description
    第四届山东理工大学ACM网络编程擂台赛比赛完后需要产生一个最终排名,排名按照题数多少来决定。但是有太多的队伍参与,手动计算排名已经不能满足比赛的需求。现在有一份名单记录各个队伍的ID和做出的题目数,需要你写一个程序,产生最终的排名。为了简化题目,这里的排名规则为:做出题目数量多的队伍排在前面,如果题数相等,保持输入时的相对顺序不要改变。

    Input
    1
    第一行包含一个正整数T( 1 ≤ T ≤ 15),表示有T组测试数据。每组数据第一行有一个正整数N(1 < N ≤ 10000)
    ,表示队伍数量。接下来N 行包含两个整数,1 ≤ ID ≤ 10^7, 0 ≤ M ≤ 100。ID为队伍的编号,M为做出的题数。
    Output
    每组数据输出包含N行,第i行有两

    1

    个整数,ID和M表示排在第i位的队伍的ID和做出的题数。

    Example Input
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    1
    8
    1 2
    16 3
    11 2
    20 3
    3 5
    26 4
    7 1
    22 4
    Example Output
    1
    2
    3
    4
    5
    6
    7
    8
    3 5
    26 4
    22 4
    16 3
    20 3
    1 2
    11 2
    7 1

    include

    include

    using namespace std;
    struct Team
    {
    string ID;
    int num;
    bool operator<(Team team1)
    {
    if (this->num < team1.num)
    return 1;
    else return 0;
    }
    };
    int main()
    {
    int T;
    cin >> T;
    for (int i = 0; i < T; i++)
    {
    int N;
    cin >> N;
    Team team[10000];
    for (int j = 0; j < N; j++)
    {
    cin >> team[j].ID >> team[j].num;
    }
    //排序应该用插入,不应该交换,交换会改变输入时题数相同的队伍的顺序
    for (int x = 0; x < N; x++)
    {
    for (int y = x + 1; y < N; y++)
    {
    if (team[x] < team[y])
    {
    Team temp = team[y];
    for (int z = y - 1; z >= x; z–)
    {
    team[z + 1] = team[z];
    }
    team[x] = temp;
    }
    }
    }
    for (int j = 0; j < N; j++)
    {
    cout << team[j].ID << ” ” << team[j].num << endl;
    }
    }
    return 0;
    }

    展开全文
  • 再比如我们搞差额选举时选票上候选人名单排序一般按汉字笔画排列也是一种惯例。 第二,要内外有别。“内”一般指家人,扩大一点讲就是亲朋好友;而“外”一般指客人及正规场合情况。 第三,要中外有别。 第四,...
  • 排序算法在我们日常生活中其实很常见,比如office全家桶里的表格工具,可以按照自定义的规则进行排序:如果表格是一张成绩单,我们可以按照分数排序;如果表格是一张人员名单,我们可以按照人名的读音顺序排序。今天...
  • 但是奖品有限,所以它需要给这些会员做一个排序,然后将名单输出来。排序规则是,先按积分排序,如果会员的积分相同则按他的ID排序,因为ID号小则表示他注册的时间早。 现在某超市有每个会员的ID(ID保证不重复)...
  • qsort 排序结构体

    千次阅读 2014-03-12 23:06:02
    最终排名 Time Limit: 1000MS Memory limit: 65536K ...第四届山东理工大学ACM网络编程擂台赛比赛完后需要产生一个最终排名,排名按照题数多少来决定。...为了简化题目,这里的排名规则为:做出题目数
  • 题目1346:会员积分排序 ...但是奖品有限,所以它需要给这些会员做一个排序,然后将名单输出来。排序规则是,先按积分排序,如果会员的积分相同则按他的ID排序,因为ID号小则表示他注册的时间早。 现在某超市有每
  • 技巧2019.11.22 周五让使用Microsoft Office的人在Office(办公室)中不再Micro(渺小)和Soft(软弱)第十五期Excel实现按姓氏笔画排序疑难杂症小编近来遇到一个麻烦,需要将一份名单按姓氏笔画排序...
  • 【京东】(数据分析工程师...老师录入时,需要输入姓和名(例如:ZHANG SAN,字母均为大写,姓名以空格隔开),并且要将这些人按一定规则排序排序方式如下: 首先,按照该形式出现的次数排序,即:姓出现次数多的...
  • 但是奖品有限,所以它需要给这些会员做一个排序,然后将名单输出来。排序规则是,先按积分排序,如果会员的积分相同则按他的ID排序,因为ID号小则表示他注册的时间早。 现在某超市有每个会员的ID(ID保证不重复)...
  • 给出一组学校的拟招生人数,并给出n个学生的k个志愿学校和成绩,让你根据成绩得出每个学校的录取名单(学生的id用学生信息的初始输入次序表示)。 注意: 1.排名规则:成绩总和 > 第一门成绩,如果都相等,则...
  • 世界杯小组赛的规则是胜一场则得3分,负得0分,平局则各得1分,现在给你4只球队,和他们的比赛结果,你的任务是输出该组的出线名单 Input 四个球队的名称和比赛场数N,及N场比赛数据,格式是 主球队名称
  • 汉字编码

    2018-06-28 00:26:41
    背景介绍 项目领导希望每个星期都有一位小伙伴在周会时分享。所以我们的一个小伙伴开始统一名单,...sort()对于汉字的排序规则是什么呢? 百分之百不是按照拼音,至少在处理多音字的时候,sort()可能就没那么聪...
  •  黑名单规则: 只禁止选中程序联网,允许其他未选中程序联网。  白名单规则:只允许选中程序联网,禁止其他未选中程序联网。  免ROOT白名单:模式不需要ROOT权限,该模式规则:只有当选中程序运行时,才打开...
  • 问题一:给出一连串姓名,按照如下规则排序,在整个名单中姓氏出现频次较多的在前面,对于相同姓氏的,在原名单中靠前的排在前面。 package Jingdong; import java.util.ArrayList; import java.util.Collections; ...
  • 之前在本地开发环境出现过类似问题,怀疑是正则表达式覆盖或者是拦截器排序规则导致,可是查了一堆网上资料,均没有类似情况,加之是本地环境问题,也就草草了之了。今天在线上环境碰到就不得不去查明原因,彻底解决...
  • 深圳公办园的录取规则各区都有所不同,按照积分或者类别排序录取,竞争激烈,就算是深户小区业主子女也不保证100%录取。今天深圳入园君整理了10区的公办园录取规则,准备报名公办园的爸妈快来看看吧~如果你还想看更...
  • (1)从文件中读出数据,存放到你定义的结构体数组...(5)有30名同学可以获得奖学金,规则是总分高者优先,有挂科不能得奖学金。请输出可以得奖学金同学的名单。 #include #include #include #include using namesp
  • 用结构体数组作计算

    2013-12-27 15:19:28
    (1)从文件中读出数据,存放到你定义的结构体数组中...(5)有30名同学可以获得奖学金,规则是总分高者优先,有挂科不能得奖学金。请输出可以得奖学金同学的名单。 #include #include #include #include using name
  • PATA1080 Graduate Admission

    2021-02-04 23:10:09
    将所有学生的信息存储下来,包括两个分数ge、gi,以及id,然后按照规则将学生排序。之后遍历已经排好顺序的学生,按照排名来查看当前学生的志愿学校的名额是否已经满了,如果没有满,则将该学生的id加入到该志愿学校...
  • 用结构体数组做计算

    千次阅读 2013-03-13 11:15:31
    【项目3-用结构体数组作计算】接项目2, (1)从文件中读出数据,存放到你...(5)有30名同学可以获得奖学金,规则是总分高者优先,有挂科不能得奖学金。请输出可以得奖学金同学的名单。 #include #include #incl
  • 【项目3-用结构体数组作计算】接项目2, ...(5)有30名同学可以获得奖学金,规则是总分高者优先,有挂科不能得奖学金。请输出可以得奖学金同学的名单。 (6)选做:统计各门课及总分的平均成绩、最高和最低成绩
  • 近期微信公众号改变了文章推送规则,并不是按照时间先后来排序。想要第一时间看到好奇的文章,速把【好奇罗杰斯】标为星标,每次读完后点个【在看】,这样我们就不会走散啦。受美商务部“实体清单”影响,哈工大、哈...
  • 说明:排名包括班级排名和年级排名,排名规则按体育竞赛规则处理,若出现两个并列第1名,下个名次为第3名,依此类推。 A:班级排名:分本科生和研究生两类学生,计算每个学生总成绩在班级中的名次。 B:年级排名:分...
  • 上期我们给大家分享了VBA创建自定义数组的方法。小伙伴们反馈了使用过程中的一些问题。今天,我将用一个案例来解释其中三个...问题是豪华品牌不是按a-z的顺序定座次的,所以没法按字符串规则排序。我:这好说,你给...
  • 说明:排名包括班级排名和年级排名,排名规则按体育竞赛规则处理,若出现两个并列第1名,下个名次为第3名,依此类推。 A:班级排名:分本科生和研究生两类学生,计算每个学生总成绩在班级中的名次。 B:年级排名:分...
  • 想知道北邮各学院各组的复试名单、每个组的原报与调剂情况?(请查阅3. 复试名单) 想知道北邮各学院各组的差额复试比、录取情况、复试刷人情况?(请查阅6. 复试结果) 想知道北邮复试笔试考什么?想找一下北邮复试...

空空如也

空空如也

1 2 3
收藏数 48
精华内容 19
关键字:

名单排序规则