软件设计师考试 第三章 数据结构 排序

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了软件设计师考试 第三章 数据结构 排序相关的知识,希望对你有一定的参考价值。

参考技术A

假设含 n 个记录的文件内容为 R1,R2,...,Rn ,相应的关键字为 k1,k2,...,kn 。经过排序确定一种排列 Rj1,Rj2,...,Rjn ,使得它们的关键字满足以下递增(或递减)关系: kj1<=kj2<=...<=kjn(或kj1>=kj2>=...>=kjn) 。

排序方法的稳定与不稳定:

内部排序和外部排序:

方法: 在插入第 i 个记录时, R1,R2,...,Ri-1 已经排好序,这时将 Ri 的关键字 ki 依次与关键字 ki-1,ki-2 等进行比较,从而找到应该插入的位置并将 Ri 插入,插入位置及其后的记录依次向后移动。

直接插入排序 是一种 稳定 的排序方法 , 时间复杂度为O(n^2),空间复杂度为O(1)。

方法: 首先将第一个记录的关键字和第二个记录的关键字进行比较,若为逆序,则交换这两个记录的值,然后比较第二个记录和第三个记录的关键字,依此类推,直到第 n-1 个记录和第 n 个记录的关键字比较过为止。上述过程称为第一趟冒泡排序,然后再进行多次冒泡排序,直到冒泡排序过程中没有进行相邻位置的元素交换处理为止。

冒泡排序 是一种 稳定 的排序方法 , 时间复杂度为O(n^2),空间复杂度为O(1)。

方法: 通过 n-i (1<=i<=n) 再次关键字之间的比较,从 n-i+1 个记录中选出关键字最小的记录,并和第 i 个记录进行交换,当 i 等于 n 时所有记录有序排列。

简单选择排序 是一种 不稳定 的排序方法 , 时间复杂度为O(n^2),空间复杂度为O(1)。

又称为“缩小增量排序”,它是对直接插入排序方法的改进。

方法: 先将整个待排序记录分割成若干子序列,然后分别进行直接插入排序,待整个序列中的记录基本有序时,再对全体记录进行一次直接插入排序。具体做法是:先取一个小于 n 的整数 d1 作为第一个增量,把文件的全部记录分成 d1 个组,即将所有距离为 d1 倍数序号的记录放在同一个组中,在各组内进行直接插入排序;然后取第二个增量 d2 (d2<d1) ,重复上述分组和排序工作,依此类推,直到所取的增量 di=1 (di<di-1<...<dc<d1) ,即所有记录放在同一组进行直接插入排序为止。

希尔排序 是一种 不稳定 的排序方法 , 时间复杂度为O(n^1.3),空间复杂度为O(1)。

方法: 附设两个位置指示变量 i 和 j ,它们的初值分别指向序列的第一个记录和最后一个记录。设枢轴记录(通常是第一个记录)的关键字为 pivot ,则首先从 j 所指位置起向前搜索,找到第一个关键字小于 pivot 的记录时将记录向前移到 i 指示的位置,然后从 i 所指位置起向后搜索,找到第一个关键字大于 pivot 的记录时将该记录后移到 j 所指位置,重复该过程直至 i 与 j 相等为止。

快速排序 是一种 不稳定 的排序方法 , 时间复杂度为O(nlogn),空间复杂度为O(logn)。

方法: 对一组待排序记录的关键字,首先按堆的定义排成一个序列(即建立初始堆),从而可以输出堆顶的最大关键字(对于大根堆而言),然后将剩余的关键字再调整成新堆,便得到次大的关键字,如此反复,直到全部关键字排成有序序列为止。

堆排序 是一种 不稳定 的排序方法 , 时间复杂度为O(nlogn),空间复杂度为O(1)。

方法: 将两个或两个以上的有序文件合并成一个新的有序文件。实现方法是:把一个有 n 个记录的无序文件看成是由 n 个长度为 1 的有序子文件组成的文件,然后进行两两归并,得到 n/2 个长度为 2 或 1 的有序文件,再两两归并,如此重复,直到最后形成包含 n 个记录的有序文件为止。

归并排序 是一种 稳定 的排序方法 , 时间复杂度为O(nlogn),空间复杂度为O(n)。

方法: 设立 r 个队列,队列的编号分别为 0、1、2、...、r-1 。首先按最低有效位的值把 n 个关键字分配到这 r 个队列中;然后按照队列编号从小到大将各队列中的关键字依次收集起来;接着再按次低有效位的值把刚收集起来的关键字分配到 r 个队列中。重复上述分配和收集过程,直到按照最高有效位分配和收集。这样就得到一个从小到大有序的关键字序列。

对于 n 个记录,执行一次分配和收集的时间为 O(n+r) 。如果关键字有 d 位,则要执行 d 便。所以总的运算时间为 O(d(n+r)) 。

基数排序 是一种 稳定 的排序方法 , 时间复杂度为O(d(n+rd)),空间复杂度为O(rd)。

各个排序方法的性能比较:

外部排序是对大型文件的排序,待排序的记录存放在外存。

常用的外部排序方法是归并排序。

二级(JAVA语言程序设计)考试大纲

二级(Java 语言程序设计)考试大纲

2021计算机Java二级考试四十五套题真题【收藏版】(一周裸考计划)

基本要求

1.掌握算法的基本概念
2.掌握基本数据结构及其操作。
3.掌握基本排序和查找算法。
4.逐步求精的结构化程序设计方法。
5.软件工程的基本方法,具有初步应用技术进行软件开发的能力。
6.数据库的基本知识,数据库设计有关的方法命令。

考试内容

一 基本数据结构和算法

  1. 算法的基本概念;算法复杂度的概念和意义(时间复杂度与空间复杂度)。
  2. 数据结构的定义;数据的逻辑结构与存储结构;数据结构的图形表示;线性结构与非线性结构的概念。
  3. 线性表的定义;线性表的顺序存储结构及其插入与删除运算。
  4. 栈和队列的定义;栈和队列的顺序存储结构及其基本运算。
  5. 线性单链表、双向链表与循环链表的结构及其基本运算。
  6. 树的基本概念;二叉树的定义及其存储结构;二叉树的前序、中序和后序遍历。
  7. 顺序查找与二分法查找算法;基本排序算法(交换类排序,选择类排序,插入类排序)。

二 程序设计基础

  1. 程序设计方法与风格。
  2. 结构化程序设计。
  3. 面向对象的程序设计方法,对象,方法,属性及继承与多态性。

三 软件工程基础

  1. 软件工程基本概念,软件生命周期概念,软件工具与软件开发环境。
  2. 结构化分析方法,数据流图,数据字典,软件需求规格说明书。
  3. 结构化设计方法,总体设计与详细设计。
  4. 软件测试的方法,白盒测试与黑盒测试,测试用例设计,软件测试的实施,单元测试、集成测试和系统测试。
  5. 程序的调试,静态调试与动态调试。

四 数据库设计基础

  1. 数据库的基本概念:数据库,数据库管理系统,数据库系统。
  2. 数据模型,实体联系模型及E-R图,从E-R图导出关系数据模型。
  3. 关系代数运算,包括集合运算及选择、投影、连接运算,数据库规范化理论。
  4. 数据库设计方法和步骤:需求分析、概念设计、逻辑设计和物理设计的相关策略。

考试方式
1. 公共基础知识不单独考试,与其他二级科目组合在一起,作为二级科目考核内容的一部分。
2. 上机考试,10道单项选择题,占10分。

Java 语言程序设计

基本要求

  1. 掌握Java语言的特点,实现机制和体系结构。
  2. 掌握Java语言中面向对象的特性。
  3. 掌握Java语言提供的数据类型和结构。
  4. 掌握Java语言编程的基本技术。
  5. 会编写Java用户界面程序。
  6. 会编写Java简单应用程序。
  7. 会编写Java小应用程序(Applet)。
  8. 了解Java语言的广泛应用。

考试内容

一、Java语言的特点和实现机制

二、Java体系结构

  1. Java程序结构。
  2. Java类库结构。
  3. Java程序开发环境结构。

三、Java语言中面向对象的特性

  1. 面向对象编程的基本概念和特征。
  2. 类的基本组成和使用。
  3. 对象的生成、使用和删除。
  4. 包与接口。
  5. Java类库的常用类和接口。

四、Java简单数据类型及运算

  1. 变量和常量。
  2. 基本数据类型及转换。
  3. Java类库中对基本数据类型的类包装。
  4. 运算符和表达式运算。
  5. 字符串和数组。

五、Java语言的基本语句

  1. 条件语句。
  2. 循环语句。
  3. 注释语句。
  4. 异常处理语句。
  5. 表达式语句。

六、Java编程技术基础

  1. 输入输出流及文件操作。
  2. 线程的概念和使用。
  3. 程序的同步与共享。
  4. Java语言的继承、多态和高级特性。
  5. 异常处理和断言概念。
  6. Java语言的集合(Collections)框架和泛型概念。

七、编写用户界面程序基础

  1. 用AWT编写图形用户界面的基本技术。
  2. 用Swing编写图形用户界面的特点。
  3. Swing的事件处理机制。

八、编写小应用程序(Applet)基础

  1. Applet类的API基本知识。
  2. Applet编写步骤及特点。
  3. 基于AWT和Swing编写用户界面。
  4. Applet的多媒体支持和通信。

考试方式

上机考试,考试时长120分钟,满分100分。

  1. 题型及分值
    单项选择题40分(含公共基础知识部分10分)、操作题60分(包括基本操作题、简单应用题及综合应用题)。
  2. 考试环境
    NetBeans。

以上是关于软件设计师考试 第三章 数据结构 排序的主要内容,如果未能解决你的问题,请参考以下文章

二级(JAVA语言程序设计)考试大纲

软考软件设计师考试大纲

软考中级软件设计师考试大纲

软件设计师科目考试简介

考研 考北航的软件工程 都考啥科目

软考软件设计师