zoukankan      html  css  js  c++  java
  • 数据结构(四十三)排序的基本概念与分类

      一、排序的基本概念

      假设含有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.内排序与外排序

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

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

      三、排序算法的性能评价

    • 时间复杂度:排序算法的时间开销是衡量其好坏的最重要的标志。高效率的内排序算法应该是具有尽可能少的关键字比较次数和尽可能少的记录移动次数。
    • 空间复杂度:辅助存储空间是除了存放待排序所占用的存储空间之外,执行算法所需要的其他存储空间。当排序算法中使用的额外内存空间与要排序数据元素的个数n无关时,其空间复杂度为O(1),大多数排序算法的空间复杂度是O(1),也有一些时间复杂度性能好的排序算法,其空间复杂度会达到O(n)。
    • 稳定性,即对任意一组数据元素序列,使用某种排序算法对它进行按照关键字的排序,若相同关键字的前后位置关系在排序前与排序后保持一致,则称此排序方法时稳定的。稳定的排序算法是应用问题所希望的,因此,排序算法的稳定性是衡量排序算法好坏的一个重要指标。

      

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

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

      

      五、各种内排序算法的分类和性能比较

    • 内排序的四种分类

      

    • 各种内排序算法的性能比较

      

  • 相关阅读:
    Binary Search Tree Iterator 解答
    Invert Binary Tree 解答
    Min Stack 解答
    Trapping Raining Water 解答
    Candy 解答
    Jump Game II 解答
    Implement Hash Map Using Primitive Types
    Gas Station 解答
    Bucket Sort
    HashMap 专题
  • 原文地址:https://www.cnblogs.com/BigJunOba/p/9295644.html
Copyright © 2011-2022 走看看