精华内容
下载资源
问答
  • 多关键字排序 多关键字排序 多关键字排序 多关键字排序
  • 多关键字排序

    2014-04-01 17:01:25
    实现从文件中读取数据进行排序,也可以实现自己输入数据进行多关键字排序
  • 2. 解决思路我们先看看简单的2个关键字排序,有以下两种方式:先进行第一关键字排序,再进行第二关键字排序;先进行第二关键字排序,再进行第一关键字排序。这两种排序顺序,结果会有什么不同...

    1. 问题引入

    在排序问题中,经常会遇到使用多个关键字进行排序。比如说,按照字母顺序对一批学生姓名进行排序,如果第一个字母相同,则按照第二个字母顺序排序,以此类推。这就会导致,多个关键字出现时,怎么去协调关键字的顺序呢?

    2. 解决思路

    我们先看看简单的2个关键字排序,有以下两种方式:

    先进行第一关键字排序,再进行第二关键字排序;

    先进行第二关键字排序,再进行第一关键字排序。

    这两种排序顺序,结果会有什么不同吗?很显然,靠后面的关键字排序,可能会打乱前面关键字的排序。举个简单的例子就很容易理解了。

    cb44f3563f5717fb60f83fa7bc3649bb.png

    设列表 lst = [(2, 2), (1, 1), (1, 3)],对该列表进行升序排序,如果第一个元素相同,则按照第二个元素升序排序。

    很显然,第一关键字是第一个元素,第二关键字是第二个元素。

    方式一:先进行第一关键字排序,再进行第二关键字排序

    lst = [(2, 2), (3, 1), (1, 3)]

    lst.sort(key=lambda x: x[0])# 先对第1个关键字排序

    lst.sort(key=lambda x: x[1])# 再对第2个关键字排序

    print(lst)# 输出的结果为[(1, 1), (2, 2), (1, 3)]

    方式二:先进行第二关键字排序,再进行第一关键字排序

    lst = [(2, 2), (3, 1), (1, 3)]

    lst.sort(key=lambda x: x[1])# 先对第2个关键字排序

    lst.sort(key=lambda x: x[0])# 再对第1个关键字排序

    print(lst)# 输出的结果为[(1, 1), (1, 3), (2, 2)]

    从上面的例子中可以看出,不同关键字顺序的排序方式导致了最终排序的结果也不同。

    方式二的排序方式才是我们想要的结果;

    方式一的结果为什么错了呢?原因是我们想要第一关键字进行排序,但是进行第二关键字排序时,打乱了第一关键字的排序方式,导致结果不符合我们的预期。

    3. 总结

    在进行多关键字排序时,如果是按照关键字分步进行排序时,按照关键字逆序的顺序进行排序,就能得到我们想要的结果了。比如由3个关键字,应该先进行第三关键字排序,再进行第二关键字排序,最后进行第一关键字排序。

    到这里还未结束,因为我们使用的编程语言是Python,Python列表为我们提供的sort函数功能远不止此。一天天没事做,净整那些花里胡哨的,还有什么是一句Python代码不能搞定的 :

    lst.sort(key=lambda x: (x[0],x[1]))# 直接按照顺序,第一关键字先,第二关键字后

    如果由N个关键字,可以写成如下:

    lst.sort(key=lambda x: (第1关键字 , 第2关键字 , ......))

    如果有帮助,还望少侠留下你的赞!感谢支持。

    展开全文
  • 多关键字排序实验

    2018-07-08 00:40:00
    了解多关键字的使用范围,并实现对牌照按多关键字排序后的快速查找。 【问题描述】 为加快速度需先对数据记录按关键字排序,在汽车数据模型中,汽车是关键字,而且是具有结构特点的一类关键字。因为汽车牌照是汉字...

    一、实习目的

        了解多关键字的使用范围;编写程序实现对汽车牌照的排序。

    二、实验原理

    了解多关键字的使用范围,并实现对牌照按多关键字排序后的快速查找。

    【问题描述】

    为加快速度需先对数据记录按关键字排序,在汽车数据模型中,汽车是关键字,而且是具有结构特点的一类关键字。因为汽车牌照是汉字,字母和数字混编的,例如:AD7328。这种记录集合是一个适于利用多关键字进行排序的典型例子。

    【基本任务】

    (1)利用链式基数排序方法实现排序。

    (2)在排序的基础上,利用二分查找的思想,实现对汽车记录按关键字的查找。

    三、参考程序

    #include<stdio.h>
    #include <stdlib.h>

    struct sort{
    int zi[3];
    };
    sort a[8]={{1,2,3},{1,6,3},{1,0,9},{7,3,1},{2,3,9},{1,4,5},{7,1,8},{2,3,8}};
    void paixu(sort *a,int radix,int size,int k){
    int *temp,i,number=0,number1=0,j,z;
    sort *b;
    z=k;
    temp=(int *)malloc(radix*sizeof(int));
    b=(sort *)malloc(number*sizeof(sort));
    while(k--){
    for(i=0;i<radix;i++){
    temp[i]=0;
    }
    for(i=0;i<size;i++){
    number=a[i].zi[k];
    temp[number]=temp[number]+1;
    }
    printf("\n----\n");
    for(i=0;i<radix-1;i++){
    temp[i+1]=temp[i+1]+temp[i];
    }

    for(i=0;i<size;i++){
    number1=a[i].zi[k];
    temp[number1]=temp[number1]-1;
    b[temp[number1]]=a[i];


    }


    for(i=0;i<size;i++){
    a[i]=b[i];
    }

    printf("\n---------------\n");
    if(k==0)
    break;

    }
    for(i=0;i<size;i++){
    for(j=0;j<z;j++)
    printf("%d",a[i].zi[j]);
    printf("\n");
    }
    free(temp);
    free(b);


    }
    int main(){

    int size=8,k=3,radix=101;

    paixu(a,radix,size,k);
    return 0;
    }

    转载于:https://www.cnblogs.com/huifeidezhuzai/p/9278967.html

    展开全文
  • Excel 如何排序与多关键字排序

    千次阅读 2019-08-28 17:08:17
    Excel 如何排序与多关键字排序 在使用Excel时,对每项录入了数据后,需要对它们进行排序,如何实现呢? 唯一关键字排序 排序前原表格如下: 我们需要以“总分”为关键字排降序, 1、选定“总分”所在的列; 2、...

    Excel 如何排序与多关键字排序

    • 在使用Excel时,对每项录入了数据后,需要对它们进行排序,如何实现呢?

    唯一关键字排序

    • 排序前原表格如下:在这里插入图片描述
    • 我们需要以“总分”为关键字排降序,
    • 1、选定“总分”所在的列;
      在这里插入图片描述
    • 2、点击工具栏右上角的“排序和筛选”里面的“降序”;
      在这里插入图片描述
    • 3、最后点击“排序”即可。
      在这里插入图片描述
    • 结果就是这样的:
      在这里插入图片描述

    多关键字排序

    • 对于总分相同的,我们想按照“语文”降序排列,
    • 难道需要对于每一部分总分相同的,都按“语文”分别排序一次吗?
    • 不需要,可以一次排序搞定!!!
    • 1、选定整块区域;
      在这里插入图片描述
    • 2、点击右上角“排序和筛选”里面的“自定义排序”;
      在这里插入图片描述
    • 3、根据需要依次添加关键字;
      在这里插入图片描述
    • 4、最后点击“确定”。
      在这里插入图片描述
    • 就可以达到想要的效果了!!!
      在这里插入图片描述
    • 以上教程希望能对你有所帮助。
    展开全文
  • 多关键字排序。c++

    2020-02-25 18:20:12
    基于多关键字排序/基数排序的长方形排列。

    多关键字排序

    一个长方形有长和宽,分别设为 a 和 b,现在想对一些长方形进行排序。
    有一种新的排序方法。如下:
    我们按照两个长方形的a-b值来对他们按降序排序,如果有重复,按照b值升序排序,如果还有重复,按照输入的顺序排序。

    也就是说,是多关键字排序:

    第1关键字,a-b,降序;

    第2关键字,b,升序;

    第3关键字,输入的顺序,升序;

    输入有多组测试数据(大概100组),每一组测试数据第一行先给出一个整数n,代表有n个长方形需要被排序。
    长方形被从0到n−1标号。
    接下来n行,每一含有两个整数代表每一个长方形a和b
    第i行描述长方形i−1的信息。
    处理到文件末尾。
    所有整数都在[1,100]的范围内。
    对于每一个数据,在一行中输出排好序之后的长方形ID,注意每两个 ID 【之间!】有一个空格,其他地方不要有多余空格

    sample input:
    2
    100 1
    1 2
    3
    100 50
    3 4
    1 2

    sample output:
    0 1
    0 2 1

    思路:
    定义结构体,里面存储对应长方形的三个关键字。
    注意题目中多组测试数据的输入方法。
    对于多关键字排序,也就是基数排序,需要编写对应的cmp函数。
    注意sort函数的用法:sort(begin,end,compare)

    #include<iostream>
    #include<string>
    #include<algorithm>
    using namespace std;
    struct code
    {
    	int x,y;//长宽
    	int a;//a=x-y;
    	int i;//i顺序,第三关键字 
    }arr[10000];
    bool compare(code m,code n)
    {
    	if(m.a!=n.a)	return m.a>n.a;
    	if(m.y!=n.y)	return m.y<n.y;
    	return m.i<n.i;
    }
    int main()
    {
    	int n;
    	while(scanf("%d",&n)!=EOF)
    	{
    		for(int i=0;i<n;i++)
    		{
    			int w,e;
    			cin>>w>>e;
    
    				arr[i].x=w;
    				arr[i].y=e;
    				arr[i].a=arr[i].x-arr[i].y;
    				arr[i].i=i;
    		}
    		sort(arr,arr+n,compare);
    		for(int i=0;i<n-1;i++) cout<<arr[i].i<<" ";
    		printf("%d\n",arr[n-1].i);
    	}
    	return 0;
    }
    展开全文
  • SORTBY函数同样也是排序函数,但是与SORT函数不一样的是:SORT函数只对一个关键字进行排序,而SORTBY可以对关键字进行排序。SORTBY语法第一个参数array, 表示需要进行排序的数据区域或者数组;第二个参数 by_...
  • 多关键字排序的实现

    2013-03-15 11:52:06
    武汉理工大学数据结构课程设计,多关键字排序的实现
  • 数据结构——多关键字排序 问题描述:多关键字的排序有其一定的实用范围。例如:在进行高考分数处理时,除了需对总分进行排序外,不同的专业对单科分数的要求不同,因此尚需在总分相同的情况下,按用户提出的单科...
  • 简要阐述: 在解决问题的时候,经常会有一些排序问题。...多关键字排序中sort()函数和结构体的使用: 1、在结构体中重载比较符" < ": struct node{ int a,b,c; bool operator < (const ...
  • 标题多关键字排序 题目描述: 有N个学生的数据,将学生数据按成绩高低排序(高在前低在后),如果成绩相同则按姓名字符的字母序排序,如果姓名的字母序也相同则按照学生的年龄排序(从小到大),并输出N个学生排序后...
  • 结构体+多关键字排序

    2019-02-12 23:44:59
    原题https://www.luogu.org/problemnew/show/P1068 题解 结构体+多关键字排序
  • 数据结构 多关键字排序

    千次阅读 2017-12-31 16:12:56
    多关键字排序 一、实验目的   了解多关键字的使用范围;编写程序实现多关键字的排序。 二、实验原理 依次根据某位进行排序,排好序后更新a[i],最后得到的就是根据每位排好序的a[i]  LSDSort()函数:cnt...
  • 在单机环境下按多关键字对大数据排序需要较长的执行时间,为了提高按多关键字对大数据排序的效率,根据Hadoop的MapReduce模型,给出了两种基于Hadoop的多关键字排序方法。方法一在Reduce函数中使用链式基数排序算法...
  • 846.多关键字排序
  • 多关键字排序LSD实现

    2010-10-13 11:31:05
    一个简单mfc 实现 的多关键字 排序,按照lsd 算法实现。写得不好,请提供修改意见。!!!!
  • 排序9.6 基数排序9.6.1 多关键字排序9.6.2 链式基数排序 9.6 基数排序 基数排序又被称为桶排序。与前面介绍的几种排序方法相比较,基数排序和它们有明显的不同。前面所介绍的排序方法都是建立在对数据元素关键字进行...
  • 本资源是一个多关键字排序的程序设计,里面包含冒泡排序、快速排序、基数排序的完整代码实现
  • 利用多关键字排序进行高考分数处理,除了需对总分进行排序外,不同的专业对单科分数的要求不同,因此在总分相同的情况下,按用户提出的单科分数的次序要求排出考生录取的次序。 假设待排序的记录数不超过1000,表中...
  • 多关键字排序 描述 给定 n 个学生的学号(从 1 到 n 编号)以及他们的考试成绩,表示为(学号,考试成绩),请将这些学生按考试成绩降序排序,若考试成绩相同,则按学号升序排序。 答案 public class Solution { /** *...
  • 多关键字排序 目录846. 多关键字排序题解鸣谢 846. 多关键字排序 给定 n 个学生的学号(从 1 到 n 编号)以及他们的考试成绩,表示为(学号,考试成绩),请将这些学生按考试成绩降序排序,若考试成绩相同,则按学号...
  • 数据结构课程设计多关键字排序 利用多关键字排序进行高考分数处理,除了需对总分进行排序外,不同的专业对单科分数的要求不同,因此在总分相同的情况下,按用户提出的单科分数的次序要求排出考生录取的次序 内包涵...
  • 在进行高考分数处理时,除了需对总分进行排序外,不同的专业对单科分数的要求也不同,因此尚需在总分相同的情况下,按用户提出的...排序方法有很多种,这里就要设计程序比较一下内部排序和多关键字排序所用时间的长短。

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 4,574
精华内容 1,829
关键字:

多关键字排序