排序基本概念
排序(sort)或分类
所谓排序,就是要整理文件中的记录,使之按关键字递增(或递减)次序排列起来。其确切定义如下:
输入:n个记录R1,R2,…,Rn,其相应的关键字分别为K1,K2,…,Kn。
输出:Ril,Ri2,…,Rin,使得Ki1≤Ki2≤…≤Kin。(或Ki1≥Ki2≥…≥Kin)。
1.被排序对象--文件
被排序的对象--文件由一组记录组成。
记录则由若干个数据项(或域)组成。其中有一项可用来标识一个记录,称为关键字项。该数据项的值称为关键字(Key)。
注意:
在不易产生混淆时,将关键字项简称为关键字。
2.排序运算的依据--关键字
用来作排序运算依据的关键字,可以是数字类型,也可以是字符类型。
关键字的选取应根据问题的要求而定。
【例】在高考成绩统计中将每个考生作为一个记录。每条记录包含准考证号、姓名、各科的分数和总分数等项内容。若要惟一地标识一个考生的记录,则必须用"准考证号"作为关键字。若要按照考生的总分数排名次,则需用"总分数"作为关键字。
排序的稳定性
当待排序记录的关键字均不相同时,排序结果是惟一的,否则排序结果不唯一。
在待排序的文件中,若存在多个关键字相同的记录,经过排序后这些具有相同关键字的记录之间的相对次序保持不变,该排序方法是稳定的;若具有相同关键字的记录之间的相对次序发生变化,则称这种排序方法是不稳定的。
注意:
排序算法的稳定性是针对所有输入实例而言的。即在所有可能的输入实例中,只要有一个实例使得算法不满足稳定性要求,则该排序算法就是不稳定的。
排序方法的分类
1.按是否涉及数据的内、外存交换分
在排序过程中,若整个文件都是放在内存中处理,排序时不涉及数据的内、外存交换,则称之为内部排序(简称内排序);反之,若排序过程中要进行数据的内、外存交换,则称之为外部排序。
注意:
① 内排序适用于记录个数不很多的小文件
② 外排序则适用于记录个数太多,不能一次将其全部记录放人内存的大文件。
2.按策略划分内部排序方法
可以分为五类:插入排序、选择排序、交换排序、归并排序和分配排序。
排序算法分析
1.排序算法的基本操作
大多数排序算法都有两个基本的操作:
(1) 比较两个关键字的大小;
(2) 改变指向记录的指针或移动记录本身。
注意:
第(2)种基本操作的实现依赖于待排序记录的存储方式。
2.待排文件的常用存储方式
(1) 以顺序表(或直接用向量)作为存储结构
排序过程:对记录本身进行物理重排(即通过关键字之间的比较判定,将记录移到合适的位置)
(2) 以链表作为存储结构
排序过程:无须移动记录,仅需修改指针。通常将这类排序称为链表(或链式)排序;
(3) 用顺序的方式存储待排序的记录,但同时建立一个辅助表(如包括关键字和指向记录位置的指针组成的索引表)
排序过程:只需对辅助表的表目进行物理重排(即只移动辅助表的表目,而不移动记录本身)。适用于难于在链表上实现,仍需避免排序过程中移动记录的排序方法。
3.排序算法性能评价
(1) 评价排序算法好坏的标准
评价排序算法好坏的标准主要有两条:
① 执行时间和所需的辅助空间
② 算法本身的复杂程度
(2) 排序算法的空间复杂度
若排序算法所需的辅助空间并不依赖于问题的规模n,即辅助空间是O(1),则称之为就地排序(In-PlaceSou)。
非就地排序一般要求的辅助空间为O(n)。
(3) 排序算法的时间开销
大多数排序算法的时间开销主要是关键字之间的比较和记录的移动。有的排序算法其执行时间不仅依赖于问题的规模,还取决于输入实例中数据的状态。
文件的顺序存储结构表示
#define n l00 //假设的文件长度,即待排序的记录数目
typedef int KeyType; //假设的关键字类型
typedef struct{ //记录类型
KeyType key; //关键字项
InfoType otherinfo;//其它数据项,类型InfoType依赖于具体应用而定义
}RecType;
typedef RecType SeqList[n+1];//SeqList为顺序表类型,表中第0个单元一般用作哨兵
分享到:
相关推荐
【基本概念】 1. 记录与关键码:记录是数据元素的载体,其中的关键码是用于排序的数据项。 2. 排序表:由n个排序记录组成的集合,可以视为一个文件,主要操作是对这些记录进行排序。 3. 序列类型:非递减序列、递减...
在当今信息高度发展的时代,数据结构作为计算机科学与技术领域的一个基本概念,是支撑软件开发高效稳定运行的重要基石。其中,“漫话数据结构-简单选择排序.pptx”这一文档深入浅出地探讨了简单选择排序这一基础且...
数据结构中的排序是计算机科学中一个基础且重要的概念,它涉及到如何有效地组织和处理大量数据。排序算法的主要目标是将一组无序的数据元素按照特定的标准(通常是升序或降序)排列成一个有序序列。本篇文章主要介绍...
全书内容浅显易懂,利用大量且丰富的图示与范例, 详解复杂的抽象理论,从最基本的数据结构概念开始 说明,再以Java工具加以诠释阵列结构、堆栈、链表 、队列、排序、查找等重要的概念,引领读者抓住重 点轻松进入...
下面将详细阐述排序的基本概念、稳定性和分类,以及内部排序的操作和一个具体的排序算法——直接插入排序。 首先,排序是将一组无序的记录(如数组或链表)重新排列成具有特定顺序的记录序列。在这个过程中,每个...
通过张铭教授的课程,学生不仅可以掌握数据结构的基本概念,还能学习到如何在实际问题中应用这些数据结构,从而提升编程能力和问题解决能力。源码部分将帮助学生更好地理解理论知识,通过实践加深对数据结构的理解。...
1. **排序的基本概念**: - **稳定性**:排序算法的稳定性指的是如果原始序列中有相等的关键字,排序后这些相等关键字的相对顺序保持不变。例如,稳定排序算法不会改变两个相同元素的相对位置。 - **比较次数**:...
- **排序的基本概念**:理解排序算法的基本概念,特别是排序的稳定性和时间复杂度的重要性。 - **Shell排序**:掌握Shell排序的基本思想,以及其实现方法。 - **快速排序**:掌握快速排序的基本思想,并能实现该算法...
- **联系人分组**:将联系人分组,如家庭、工作等,这可能需要用到树形数据结构或图的概念。 在实现这些功能时,可能使用不同的数据结构,如链表、数组、哈希表或树,以实现高效的操作。例如,哈希表用于快速查找,...
湖南大学的数据结构期末试题涵盖了这门课程的重要概念和技术,旨在检验学生对这些知识的理解和应用能力。以下是根据题目描述可能涉及的一些关键知识点: 1. **数组与链表**: - 数组是一种线性数据结构,存储元素...
数据结构不挂科-8-排序是数据结构的重要组成部分,涉及到数据排序的基本概念、稳定性、内部排序和外部排序等知识点。本节将详细介绍数据结构不挂科-8-排序的相关知识点。 1. 排序的基本概念 排序是指将原本无序的...
在"数据结构-括号排序PPT课件"中,为了解释括号排序的问题和实现方法,首先提出了一个基本问题:如何匹配括号?接着,该PPT课件提供了一个基于数组顺序处理表达式的方法。左括号"("被依次存入数组中,当遇到右括号")...
1.3 数据结构和算法的基本概念 14 1.3.1 数据结构的基本概念 14 1.3.2 算法的基本概念 15 习题 16 习题答案 17 2 章 线性表 20 大纲要求 20 考点与要点分析 20 核心考点 20 基础要点 20 知识点讲解 20 2.1 线性表的...
《南大C语言数据结构--通俗易懂版...通过这份资料,学习者可以系统地了解和掌握C语言数据结构的基本概念和实现技巧,为后续的软件开发和算法学习打下坚实的基础。无论是对于学术研究还是实际开发工作,都有极大的帮助。
根据提供的文件信息,“数据结构--严蔚敏(C语言版)”是一本广泛使用的教材,主要介绍了数据结构的基本概念、理论以及其实现方法。本书分为前后两个部分:前半部分侧重于基本数据结构的介绍与应用,而后半部分则...
在本实验中,我们将深入探讨C++编程语言中的数据结构与排序算法。排序是计算机科学中最基础且重要的问题之一,它涉及到如何有效地重新排列一系列数据,以便按照特定标准(如升序或降序)进行访问。这个“C++ 数据...
在数据结构的学习中,我们首先会接触到基本概念,如数组、链表和队列。数组是最简单的一种数据结构,它提供了一种方式来存储和访问固定大小的数据集合。链表则允许我们在内存中不连续的位置存储元素,通过指针链接...
数据结构与算法(Python) 一、引入概念 1-01算法引入 1-02 时间复杂度与大O表示法 1-03-最坏时间复杂度与计算规则 1-04-常见时间复杂度与大小关系 1-05-代码执行时间测量模块 1-06-Python列表类型不同操作的...
具体要求:用顺序和二叉链表作存储结构,输入数列L,以回车('\n')为输入结束标志生成一棵二叉排序树T;对二叉排序树T作中序和先序遍历,输出结果;输入元素x,查找二叉排序树T,若存在含x的结点,则删除该结点,否则输出...
数据结构基础知识:介绍数据结构的基本概念、分类、特点等内容,包括数组、链表、栈、队列、树、图等。 2. Python数据结构:介绍Python中常用的数据结构,包括列表、元组、字典、集合等,以及它们的特点、使用方法...