首页 > 其他分享 >设线性表中每个元素有两个数据项k1和k2,现对线性表按一下规则进行排序:先看数据项k1,k1值小的元素在前,大的在后;在k1值相同的情况下,再看k2,k2值小的在前,大的在后。满足这种要求的

设线性表中每个元素有两个数据项k1和k2,现对线性表按一下规则进行排序:先看数据项k1,k1值小的元素在前,大的在后;在k1值相同的情况下,再看k2,k2值小的在前,大的在后。满足这种要求的

时间:2024-05-27 16:12:02浏览次数:29  
标签:数据项 线性表 k2 k1 排序 进行

题目:
设线性表中每个元素有两个数据项k1和k2,现对线性表按一下规则进行排序:先看数据项k1,k1值小的元素在前,大的在后;在k1值相同的情况下,再看k2,k2值小的在前,大的在后。满足这种要求的排序方法是( )
A.先按k1进行直接插入排序,再按k2进行简单选择排序
B.先按k2进行直接插入排序,再按k1进行简单选择排序
C.先按k1进行简单选择排序,再按k2进行直接插入排序
D.先按k2进行简单选择排序,再按k1进行直接插入排序

答题思路:
首先我们要明确题意,这一题的排序是针对k1和k2全体进行的,而不是说我排好k1后,再对每组相同的k1进行k2的排序。(不知道有没有人有这种想法,反正我第一次做时就是这么想的。但是这种排序方法要多一个对k1分组的时间,时间复杂度增大了)。

另外特别注意“在k1值相同的情况下,再看k2”这句话。这说明k1排序的优先级要比k2高,如果我们对k1先进行排序,后面对k2进行排序时就会打乱之前k1的排序。所以排序顺序是k2、k1。

接着讨论要用的算法,题中没有给什么特殊的要求,所以我们要满足的只是“数据项k1,k1值小的元素在前,大的在后;在k1值相同的情况下,再看k2,k2值小的在前,大的在后”。而通过以上分析我们知道k2先排序,题中也没说稳定性的问题,也就不用考虑k2的算法稳定性,也就是说什么排序算法都行,只要小的在前,大的在后就行。接着来考虑k1的排序,因为k1的排序优先级要高于k2,所以k1的排序可能会打乱k2已经排好的顺序,这是允许的。这时无论哪种排序算法都可以排好序,但是仔细思考会发现一个问题,那就是稳定性的问题。如果k1的排序是不稳定的,那会产生一个问题。

k1 选择排序之前:

标识 k1 k2
1 50 70
2 40 70
3 50 80
4 40 80

k1 选择排序之后:

标识 k1 k2
1 40 70
2 40 80
3 50 80
4 50 70

如上表所示,我们发现如果k1排序不稳定,那么对于相同的k1,可能k2不满足“在k1值相同的情况下,再看k2,k2值小的在前,大的在后”。所以k1的排序算法必须稳定。

综上,我们要选一个排序顺序为k2、k1,且k1排序算法要稳定的选项,所以答案为D。

标签:数据项,线性表,k2,k1,排序,进行
From: https://www.cnblogs.com/kohler21/p/18215776

相关文章

  • Qt error: LNK1104: 无法打开文件“release\xxxxx.exe”报错解决方案
    一、问题重述出现这种报错一般是程序运行之后存在空指针问题,然后直接崩溃掉,下一次调试的时候就出现这种报错。如下图所示:二、原因分析出现这种情况是因为上次运行之后,程序的exe文件异常退出了,但是其实还在后台运行中,然后重新调试的时候exe被占用,所以QT编译器无法打开......
  • JDK1.8新特性
    Lambda表达式又称为函数式编程面向对象思想:想要做什么事情,就需要创建这个类的对象,通过对象来完成某些事情函数式的思想:忽略了面向对象复杂的语法,强调做什么,而不是以什么形式做面向对象的思想实现多线程publicclassRunnableImplimplementsRunnable{@Override......
  • 【考研数据结构知识点详解及整理——C语言描述】第二章线性表的定义和基本操作
    25计算机考研,数据结构知识点整理(内容借鉴了王道408+数据结构教材),还会不断完善所整理的内容,后续的内容也会不断更新(可以关注),若有错误和不足欢迎各位朋友指出!目录 一.线性表的定义二.线性表的基本操作一.线性表的定义(1)线性表是具有相同数据类型的n(n>0)个数据元素的有......
  • 吴恩达机器学习 week1 一元回归模型的成本函数
    01学习目标    学习建立一元线性回归模型的成本函数02实现工具  (1)代码运行环境       Python语言,Jupyternotebook平台  (2)所需模块       NumPy,Matplotlib,lab_utils_uni      (lab_utils_uni是课程中用于绘制复......
  • 第二章 线性表(4)
    2.7.2链表逆置问题(反转链表问题)该部分参考了408之2023年算法题预测和力扣相关题解解决这类问题,有三种方法,递归法、迭代法和头插法。头插法是教科书中创建链表的头插法在反转链表中的应用,但是需要依赖反转的第一个结点的前驱结点,如果该结点没有前驱结点,需要先创建一个du......
  • homwork14
    题目:某培训机构入学管理系统有报名、交费和就读等多项功能,下面是对其各项功能的说明:1、报名:由报名处负责,需要在学员登记表上进行报名登记,需要查询课程表让学员选报课程,学院所报课程将记录到学员选课表2、交费:由收费处负责,需要根据学员所报课程的收费标准进行收费,然后在账目表上......
  • [AHK2] 配置文件
    开始通常在AHK中使用配置文件是通过内置的INI函数,也可以使用json或yaml,已有外部ahk脚本可以操作它们。但这些文件在ahk场景实际使用上都不怎么方便。于是我计划设计一种简洁的配置文件语法,可以在轻量级场景下替代这些常用的文件。其中最重要的一点是简单,以至于可以轻松的在记......
  • homework10
    题目:某培训机构入学管理系统有报名、交费和就读等多项功能,下面是对其各项功能的说明:1、报名:由报名处负责,需要在学员登记表上进行报名登记,需要查询课程表让学员选报课程,学院所报课程将记录到学员选课表2、交费:由收费处负责,需要根据学员所报课程的收费标准进行收费,然后在账目表上......
  • 玩转创想三维 K1 系列主板之二:编译 MCU 固件,恢复裁剪组件
    前言原创文章,转载引用请务必注明链接,水平有限,如有疏漏,欢迎交流指正。文章如有更新请访问DFRobot社区及cnblogs博客园,前者内容较全,后者排版及阅读体验更佳。本文是摸索创想三维K1系列软硬件系统的一些内容分享。最近创想三维的工作人员联系了我,希望接下来能加快网卡直连......
  • 查找 - 线性表 & 散列表 & 树
    线性表的查找顺序查找技巧:设置哨兵,放在下标为0的位置。intSearch_Seq(SSTableST,KeyTypekey){ST.R[0].key=key;for(inti=ST.length;ST.R[i].key!=key;i--);returni;}算法分析适用于顺序结构和链式结构,不要求记录按关键字有序。平均查找长度......