数据结构(四十一)排序的基本概念与分类

  一、排序的基本概念

  假设含有n个记录的序列为{r1,r2,...,rn},其相应的关键字分别为{k1,k2,...,kn},需确定1,2,...,n的一种排列p1,p2,...,pn,使其相应的关键字满足kp1≤kp2≤...≤kpn非递减(或非递增)关系,及时地序列称为一个按关键字有序的序列{rp1,rp2,...,rpn},这样的操作就称为排序。

  

  二、排序的分类

  1.稳定排序与不稳定排序

  • 稳定排序:对任意一组数据元素序列,使用某种排序算法对它进行按照关键字的排序,若相同关键字的前后位置关系在排序前与排序后保持一致,则称此排序方法时稳定的。
  • 不稳定排序:对任意一组数据元素序列,使用某种排序算法对它进行按照关键字的排序,若相同关键字的前后位置关系在排序前与排序后不能保持一致,则称此排序方法时不稳定的。

  例如:关键字序列{3(1),4,2,3(2),1},经过排序算法后变为{1,2,3(1),3(2),4},则次排序方法是稳定的;若变为{1,2,3(2),3(1),4},则次排序方法时不稳定的。

  2.内排序与外排序

  按照排序过程中所涉及的存储器的不同可分为内排序和外排序。

  • 内排序是指待排序序列完全存放在内存中进行的排序过程,这种方法适合数量不太大的数据元素的排序。
  • 外排序是指待排序的数据元素非常多,以至于它们必须存储在外部存储器上,这种排序过程中需要在内外存之间多次交换数据才能进行,这样的排序称为外排序。

  三、排序算法的性能评价

  • 时间性能:排序算法的时间开销是衡量其好坏的最重要的标志。高效率的内排序算法应该是具有尽可能少的关键字比较次数和尽可能少的记录移动次数。
  • 辅助空间:辅助存储空间是除了存放待排序所占用的存储空间之外,执行算法所需要的其他存储空间。
  • 算法的复杂性:指算法本身的复杂度,而不是指算法的时间复杂度,算法过于复杂也会影响排序的性能。

  

  四、内排序和外排序的举例

  • 内排序:插入排序、交换排序、选择排序和归并排序。
  • 外排序:磁盘排序中的多路平衡归并排序、置换-选择排序和最优归并树

原文地址:https://www.cnblogs.com/BigJunOba/p/9295644.html

时间: 2024-10-07 14:44:34

数据结构(四十一)排序的基本概念与分类的相关文章

11. 蛤蟆的数据结构进阶十一排序实现之冒泡法

11. 蛤蟆的数据结构进阶十一排序实现之冒泡法 本篇名言:"君子坦荡荡,小人长戚戚. --孔丘" 接下去我们来看下如何实现各种排序,先来看下冒泡法实现. 欢迎转载,转载请标明出处:http://blog.csdn.net/notbaron/article/details/47683113 1.  冒泡排序(Bubble Sort) 冒泡排序(BubbleSort),是一种计算机科学领域的较简单的排序算法. 它重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来

数据结构(四)常用排序算法-选择、插入、希尔

选择排序 实现思路: 1.将需排序的集合设为A,已经排好顺的集合为B(在未排序前B集合为空). 2.每次从A集合中查找出最大或者最小的元素后放入集合B中 3.同时将该元素从集合A中移除. 4.循环执行以上两步直到集合A为空,B集合中的元素就有序了. 缺点: 效率低,时间复杂度为 O(n*n),是一种只适合小数据集的原地排序算法.   示范代码 1  public class CommSort { 2      // 比较大小 3      @SuppressWarnings({ "rawtype

SDUT 3401 数据结构实验之排序四:寻找大富翁

数据结构实验之排序四:寻找大富翁 Time Limit: 200 ms Memory Limit: 512 KiB Problem Description 2015胡润全球财富榜调查显示,个人资产在1000万以上的高净值人群达到200万人,假设给出N个人的个人资产值,请你快速找出排前M位的大富翁. Input 首先输入两个正整数N( N ≤ 10^6)和M(M ≤ 10),其中N为总人数,M为需要找出的大富翁数目,接下来给出N个人的个人资产,以万元为单位,个人资产数字为正整数,数字间以空格分隔.

java数据结构与算法之树基本概念及二叉树(BinaryTree)的设计与实现

[版权申明]未经博主同意,不允许转载!(请尊重原创,博主保留追究权) http://blog.csdn.net/javazejian/article/details/53727333 出自[zejian的博客] 关联文章: java数据结构与算法之顺序表与链表设计与实现分析 java数据结构与算法之双链表设计与实现 java数据结构与算法之改良顺序表与双链表类似ArrayList和LinkedList(带Iterator迭代器与fast-fail机制) java数据结构与算法之栈(Stack)设

浅谈算法和数据结构: 四 快速排序

原文:浅谈算法和数据结构: 四 快速排序 上篇文章介绍了时间复杂度为O(nlgn)的合并排序,本篇文章介绍时间复杂度同样为O(nlgn)但是排序速度比合并排序更快的快速排序(Quick Sort). 快速排序是20世纪科技领域的十大算法之一 ,他由C. A. R. Hoare于1960年提出的一种划分交换排序. 快速排序也是一种采用分治法解决问题的一个典型应用.在很多编程语言中,对数组,列表进行的非稳定排序在内部实现中都使用的是快速排序.而且快速排序在面试中经常会遇到. 本文首先介绍快速排序的思

数据结构-实验六 排序

实验六   排序   l  实验目的 1.排序的基本概念 1.掌握在数组上进行各种排序的方法和算法. 2.深刻理解各种方法的特点,并能灵活应用. 3.加深对排序的理解,逐步培养解决实际问题的编程能力. l  实验内容 1.排序的基本概念 (一)基础题 1.编写各种排序方法的基本操作函数: (1)s_sort(int e[],int n)选择排序: (2)si_sort(int e[],int n)直接插入排序: (3)sb_sort(int e[],int n)冒泡排序: (4)merge(in

排序的基本概念

排序是数据结构的一种重要运算. 本章的5.1节至5.6节介绍内排序的各种方法,5.7节介绍外排序方法. 此外,堆排序也是一种典型的选择排序,有关堆排序的算法将在第8章中介绍. 5.1基本概念 在讨论排序的概念之前,首先引入排序码的概念. 排序码是结点中的一个或多个字段,其值作为排序运算中的依据. 排序码可以是关键码,这时的排序是按关键码对文件进行排序的: 排序码也可以不是关键码,这时可能有多个结点的排序码具有相同的值,因而排序结果可能不唯一. 排序码的数据类型既可以是正数,也可以是实数或字符串,

ActionScript3游戏中的图像编程(连载四十一)

2.3.3 Photoshop深度==Flash强度? 下一个是深度,用排除法我对应上了强度.这次跟投影的不一样,深度可以小于100%.但不管如何,我们先把深度调很大看看,比如都调到1000%.(图 2.62,图 2.63) 图 2.62 强度1000%的Flash斜角滤镜 图 2.63 深度1000%的Photoshop斜面 Photoshop里,浮雕的高度明显增大,而且轮廓相当美观.Flash虽然也明显地凸了起来,但已经彻底失控了,又是数值过大所致? 数值调小点吧,150%?200%?效果始

数据结构(十一)——递归

数据结构(十一)--递归 一.递归简介 1.递归简介 递归是一种数学上分而自治的思想. A.将原问题分解为规模较小的问题进行处理 分解后的问题与原问题类型完全相同,当规模较小. 通过小规模问题的解,能够轻易求得原生问题的解 B.问题的分解时有限的 当边界条件不能满足时,分解问题(继续递归) 当边界条件满足时,直接求解(递归结束) 2.递归模型 递归模型的一般表示法: 二.递归的应用 递归在程序设计中的应用 递归函数: 函数体中存在自我调用的函数 递归函数必须有递归出口(边界条件) 函数的无限递归