zoukankan      html  css  js  c++  java
  • 内部排序(总结篇)

      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

  • 相关阅读:
    打印乘法口诀
    打印三角形
    java语言基础
    java环境配置
    postgresql新建插入存储过程
    postman做自动化
    fiddler抓包篡改数据实例
    log4j常用4个日志级别
    来一个简单点的表单提交
    mapper文件简单格式
  • 原文地址:https://www.cnblogs.com/aimmiao/p/9346410.html
Copyright © 2011-2022 走看看