• 内部排序(总结篇)


      1. 内部排序与外部排序的区别:

      排序过程中涉及的存储器不同,内部排序所操作的数据都存放于内存;而外部排序所操作的数据量太大以至于不能全部放于内存,会涉及到外存访问。

      

      2. 内部排序算法的稳定性:

      待排序的数据中如果有两个相等的数据,经过排序算法之后的先后顺序依据不变的话,则称该排序方法是稳定的,否则就是不稳定的。

      3.内部排序算法的分类:

    3.1 按内部排序过程中所需的工作量来区分可分为三类:

    (1)   简单的排序方法, 其时间复杂度为n*n

    (2)   先进的排序方法, 其时间复杂度为nlogn

    (3)   基数排序,其时间复杂度为d*n

    3.2 按内部排序过程中所依据的不同原则可分为五类:

    (1)插入排序:  直接插入排序   折半插入排序    2-路插入排序     表插入排序      希尔排序

    (2)交换排序:  起泡排序     快速排序

    (3)选择排序:  简单选择排序    树形选择排序     堆排序

    (4)归并排序:  2-路归并排序  

    (5)基数排序:   链式基数排序

     

      下表是各内部排序方法的总览:

      3.3

      另外,对于单个记录所占空间太大时,排序过程中不合适直接进行记录间的交换,而有些内部排序方法如堆排序、快速排序,无法像表插入排序、链式基数排序那样,以修改指针代替记录移动,这种情况下,可以另设一个地址向量,当移动和比较记录时,利用地址向量中的值实现,与此方法相关的算法见 地址排序(重排算法)

       3.4 最后,探讨下,”内部排序可能达到的最快速度?”

       上述讨论的排序方法(除基数排序外),都是基于“关键字间的比较”实现的,这类操作可以用一个判定树描述,利用二叉树相关的基础性质知,借助于“比较”进行排序的算法在最坏情况下能达到的最好的时间复杂度就是nlog2n

  • 相关阅读:
    机器学习之线性回归
    Anaconda使用
    Pycharm使用总结
    Mysql使用小tips
    技术转型与考研总结
    C语言的学习
    python 使用小结
    RedHat Linux 忘记密码
    设计模式之单例模式
    Java 读写Properties配置文件
  • 原文地址:https://www.cnblogs.com/aimmiao/p/9346410.html
Copyright © 2020-2023  润新知