`
mintelong
  • 浏览: 397166 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

数据结构--排序基本概念

    博客分类:
  • java
阅读更多
排序基本概念 
排序(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个单元一般用作哨兵


分享到:
评论

相关推荐

    数据结构-大二上复习思维导图

    大二上学期的数据结构课程通常涵盖了一些基本和重要的概念,这些概念在软件开发和算法设计中至关重要。这份"数据结构-大二上复习思维导图"提供了对这一主题的全面概述,主要分为查找、二叉树、排序和复习四个主要...

    C#数据结构--方法及其应用以及在.NET框架中相应的算法

    ### C# 数据结构——方法及其应用以及在 .NET 框架中相应的算法 #### 第1章:数据结构和算法的基础概念及C#基础知识 - **数据结构与算法概述**:介绍数据结构与算法的基本定义及其重要性。数据结构是指一组特定...

    数据结构学习资料;总结的经典;一定对他家有用

    首先,我们来看"数据结构-绪论-08软件工程.ppt",这是学习的起点,它会介绍数据结构的基本概念,包括什么是数据结构,为什么我们需要数据结构,以及数据结构的主要类型。通常,绪论部分还会讨论数据结构在实际编程中...

    哈尔滨工业大学计算机课程实验-数据结构-内含源码和说明书.zip

    - 基本概念:讲解什么是数据结构,包括线性结构(如数组、链表)、树形结构(如二叉树、堆)、图形结构以及散列结构等。 - 抽象数据类型(ADT):介绍ADT的概念,例如栈、队列、集合、映射和优先队列等,以及它们...

    数据结构与算法(浙江大学陈越、何**)(pdf格式ppt)

    浙江大学的《数据结构与算法》课程,通过MOOC平台为广大学习者提供了高质量的教学资源,包括PDF格式的PPT,帮助学生深入理解这一领域的基本概念和实践技能。 首先,我们来看看课程中涉及到的一些主要知识点: 1. *...

    清华大学教程 --数据结构

    数据结构的基本概念包括数组、链表、栈、队列、树、图等。数组是最基础的数据结构,它提供了一种方式来存储和访问固定大小的数据集合。链表则在内存中不连续存放元素,通过指针连接各个节点,解决了数组插入和删除...

    22%-数据结构-c语言-排序算法(8种).ppt

    【基本概念】 1. 记录与关键码:记录是数据元素的载体,其中的关键码是用于排序的数据项。 2. 排序表:由n个排序记录组成的集合,可以视为一个文件,主要操作是对这些记录进行排序。 3. 序列类型:非递减序列、递减...

    漫话数据结构-简单选择排序.pptx

    在当今信息高度发展的时代,数据结构作为计算机科学与技术领域的一个基本概念,是支撑软件开发高效稳定运行的重要基石。其中,“漫话数据结构-简单选择排序.pptx”这一文档深入浅出地探讨了简单选择排序这一基础且...

    java版数据结构!绝对经典

    《Java版数据结构》是一本非常适合Java程序员的学习资料,不仅涵盖了数据结构与算法的基本概念,还深入探讨了各种高级数据结构与算法的应用。无论是初学者还是有经验的开发者,都能从中获得有价值的信息。通过本书的...

    杭电考研851数据结构2001-2015年真题

    1. 基本概念:理解数据结构的定义,包括逻辑结构(如线性结构、树形结构、图形结构、集合等)和物理结构(如顺序存储、链式存储)。 2. 线性结构:如数组、链表、栈和队列。数组是最基本的数据结构,提供了随机访问...

    数据结构--排序 很细致

    数据结构中的排序是计算机科学中一个基础且重要的概念,它涉及到如何有效地组织和处理大量数据。排序算法的主要目标是将一组无序的数据元素按照特定的标准(通常是升序或降序)排列成一个有序序列。本篇文章主要介绍...

    图解数据结构--使用Java

    全书内容浅显易懂,利用大量且丰富的图示与范例, 详解复杂的抽象理论,从最基本的数据结构概念开始 说明,再以Java工具加以诠释阵列结构、堆栈、链表 、队列、排序、查找等重要的概念,引领读者抓住重 点轻松进入...

    郝斌数据结构78讲附带源代码【高速下载地址】

    郝斌的数据结构教程不仅涵盖了数据结构的基本概念和常见类型,还深入讲解了高级数据结构的原理及应用场景。通过该教程的学习,可以系统地掌握数据结构的相关知识,并能在实际开发工作中灵活运用这些知识解决问题。...

    数据结构-章-排序(与“记录”有关文档共88张).pptx

    下面将详细阐述排序的基本概念、稳定性和分类,以及内部排序的操作和一个具体的排序算法——直接插入排序。 首先,排序是将一组无序的记录(如数组或链表)重新排列成具有特定顺序的记录序列。在这个过程中,每个...

    中南大学943数据结构题目.pdf

    本文档为中南大学数据结构考研题目,涵盖数据结构与算法分析的基础知识,包括抽象数据类型、数据结构、算法分析、线性表、栈、队列、二叉树、树、排序技术、检索技术、索引技术、图等基本概念和操作。本文档还包括...

    2015-2017年青岛大学910数据结构考研真题

    首先,我们来看数据结构的基本概念。数据结构主要包括数组、链表、栈、队列、树、图等。数组是最基础的数据结构,它提供了随机访问元素的能力,但在插入和删除元素时效率较低。链表则通过指针连接元素,允许快速插入...

    北大信息院数据结构--张铭

    通过张铭教授的课程,学生不仅可以掌握数据结构的基本概念,还能学习到如何在实际问题中应用这些数据结构,从而提升编程能力和问题解决能力。源码部分将帮助学生更好地理解理论知识,通过实践加深对数据结构的理解。...

    数据结构思维导图-排序.pdf

    1. **排序的基本概念**: - **稳定性**:排序算法的稳定性指的是如果原始序列中有相等的关键字,排序后这些相等关键字的相对顺序保持不变。例如,稳定排序算法不会改变两个相同元素的相对位置。 - **比较次数**:...

    数据结构-排序算法的实现(代码+报告)

    - **排序的基本概念**:理解排序算法的基本概念,特别是排序的稳定性和时间复杂度的重要性。 - **Shell排序**:掌握Shell排序的基本思想,以及其实现方法。 - **快速排序**:掌握快速排序的基本思想,并能实现该算法...

Global site tag (gtag.js) - Google Analytics