数据结构 内排序外排序详细解析
- 格式:ppt
- 大小:5.80 MB
- 文档页数:126
数据结构-数据结构内排序数据结构数据结构内排序在计算机科学中,数据结构内排序是一项至关重要的任务。
简单来说,排序就是将一组数据按照特定的顺序进行排列,比如从小到大或者从大到小。
为什么要进行排序呢?想象一下,如果我们有一堆杂乱无章的数据,要从中找到我们需要的信息,那可真是大海捞针。
但如果这些数据是有序的,我们就能更快更准确地找到目标。
常见的数据结构内排序方法有很多,比如冒泡排序、插入排序、选择排序、快速排序、归并排序等等。
下面咱们就来一个个看看。
先来说说冒泡排序。
这就像是水里的泡泡,小的泡泡会往上浮,大的泡泡会往下沉。
在数据中,每次比较相邻的两个元素,如果顺序不对就进行交换,一轮下来,最大的元素就“浮”到了末尾。
然后再对剩下的元素重复这个过程,直到所有元素都有序。
虽然它的原理简单,但是效率可不太高,特别是对于大规模的数据。
插入排序呢,就像是我们在整理扑克牌。
每次拿到一张新牌,就把它插入到已经排好序的牌中合适的位置。
从第二个元素开始,将它与前面已经排好序的元素逐个比较,找到合适的位置插入。
这个方法在数据量较小或者基本有序的情况下表现还不错。
选择排序则是每次从待排序的数据中选择最小(或最大)的元素,放到已排序序列的末尾。
它的优点是实现简单,但同样效率不是很高。
接下来是快速排序,这可是个厉害的角色。
它选择一个基准元素,将数据分为比基准小和比基准大的两部分,然后对这两部分分别进行排序。
快速排序的平均性能非常好,是实际应用中经常使用的排序算法之一。
最后说说归并排序。
它的思路是把数据分成两半,分别排序,然后再把排好序的两部分合并起来。
归并排序是一种稳定的排序算法,也就是说相同元素的相对顺序在排序前后不会改变。
那怎么判断一个排序算法的好坏呢?主要看三个方面:时间复杂度、空间复杂度和稳定性。
时间复杂度说的是算法执行所需要的时间与数据规模之间的关系。
比如冒泡排序的时间复杂度是 O(n²),而快速排序的平均时间复杂度是O(nlogn)。
【数据结构】常见排序算法复杂度相关概念1、稳定排序(stable sort)和⾮稳定排序稳定排序是指所有相等的数经过某种排序算法操作后仍然能保持它们在排序之前的相对次序。
反之就是⾮稳定排序。
2、内排序(internal sorting)和外排序(external sorting)在排序过程中,所有需要排序的数都在内存,并在内存中调整它们的存储顺序,称为内排序;在排序过程中,只有部分数被调⼊内存,并借助内存调整数在外存中的存放顺序排序⽅法称为外排序。
排序算法【冒泡排序】(Bubble Sort)冒泡排序⽅法是最简单的排序⽅法。
这种⽅法的基本思想是,将待排序的元素看作是竖着排列的“⽓泡”,较⼩的元素⽐较轻,从⽽要往上浮。
在冒泡排序算法中我们要对这个“⽓泡”序列处理若⼲遍。
所谓⼀遍处理,就是⾃底向上检查⼀遍这个序列,并时刻注意两个相邻的元素的顺序是否正确。
如果发现两个相邻元素的顺序不对,即“轻”的元素在下⾯,就交换它们的位置。
显然,处理⼀遍之后,“最轻”的元素就浮到了最⾼位置;处理⼆遍之后,“次轻”的元素就浮到了次⾼位置。
在作第⼆遍处理时,由于最⾼位置上的元素已是“最轻”元素,所以不必检查。
⼀般地,第i遍处理时,不必检查第i⾼位置以上的元素,因为经过前⾯i-1遍的处理,它们已正确地排好序。
冒泡排序是稳定的。
算法时间复杂度是O(n2)。
【选择排序】(Selection Sort)选择排序的基本思想是对待排序的记录序列进⾏n-1遍的处理,第 i 遍处理是将[i..n]中最⼩者与位置 i 交换位置。
这样,经过 i 遍处理之后,前 i 个记录的位置已经是正确的了。
选择排序是不稳定的。
算法复杂度是O(n2 )。
【插⼊排序】(Insertion Sort)插⼊排序的基本思想是,经过i-1遍处理后,L[1..i-1]⼰排好序。
第i遍处理仅将L插⼊L[1..i-1]的适当位置,使得L[1..i]⼜是排好序的序列。
要达到这个⽬的,我们可以⽤顺序⽐较的⽅法。
第10章排序10.1 知识点分析1.排序基本概念:(1)排序将数据元素的任意序列,重新排列成一个按关键字有序(递增或递减)的序列的过程称为排序。
(2)排序方法的稳定和不稳定若对任意的数据元素序列,使用某个排序方法,对它按关键字进行排序,若对原先具有相同键值元素间的位置关系,排序前与排序后保持一致,称此排序方法是稳定的;反之,则称为不稳定的。
(3)内排序整个排序过程都在内存进行的排序称为内排序,本书仅讨论内排序。
(4)外排序待排序的数据元素量大,以致内存一次不能容纳全部记录,在排序过程中需要对外存进行访问的排序称为外排序。
2.直接插入排序直接插入排序法是将一个记录插到已排序好的有序表中,从而得到一个新的,记录数增1的有序表。
3.二分插入排序二分插入排序法是用二分查找法在有序表中找到正确的插入位置,然后移动记录,空出插入位置,再进行插入的排序方法。
4.希尔排序希尔排序的基本思想是:先选取一个小于n的整数d1作为第一个增量,把待排序的数据分成d1个组,所有距离为d1的倍数的记录放在同一个组内,在各组内进行直接插入排序,每一趟排序会使数据更接近于有序。
然后,取第二个增量d2,d2< d1,重复进行上述分组和排序,直至所取的增量d i=1(其中d i< d i-1 < ……< d2< d1),即所有记录在同一组进行直接插入排序后为止。
5.冒泡排序冒泡法是指每相邻两个记录关键字比大小,大的记录往下沉(也可以小的往上浮)。
每一遍把最后一个下沉的位置记下,下一遍只需检查比较到此为止;到所有记录都不发生下沉时,整个过程结束。
6.快速排序快速排序法是通过一趟排序,将待排序的记录组分割成独立的两部分,其中前一部分记录的关键字均比枢轴记录的关键字小;后一部分记录的关键字均比枢轴记录的关键字大,枢轴记录得到了它在整个序列中的最终位置并被存放好。
第二趟再分别对分割成两部分子序列,再进行快速排序,这两部分子序列中的枢轴记录也得到了最终在序列中的位置而被存放好,并且它们又分别分割出独立的两个子序列……。