zoukankan      html  css  js  c++  java
  • 常用排序算法总结

    稳定性:

    若存在多个关键字相同的记录,经过排序后这些具有相同关键字的记录之间的相对次序保持不变,该排序方法是稳定的;
    若具有相同关键字的记录之间的相对次序发生改变,则称这种排序方法是不稳定的。

    一.插入排序

    ①.直接插入排序(稳定)

    使用直接插入排序,对于具有n个记录的文件,要进行n-1趟排序

    ②.希尔排序(不稳定)

    该方法实质上是一种分组插入方法。
    一般取d1=n/2,di+1=di/2。如果结果为偶数,则加1,保证di为奇数。
    希尔排序是不稳定的,希尔排序的执行时间依赖于增量序列,其平均时间复杂度为O(n^1.3).

    二.选择排序

    ①.直接选择排序(不稳定)
    直接选择排序的平均时间复杂度为O(n^2)
    ②.堆排序(不稳定)
    将待排数组看作一个完全二叉树,二叉树中每个节点都比子节点大(大根堆)/每个节点都比子节点小(小根堆),
    然后把根节点和最后一个节点交换,调整树的结构,重复操作,完成排序
    堆排序的最坏时间复杂度为O(nlgn),堆排序的平均性能较接近于最坏性能。由于建初始堆所需的比较 次数较多,所以堆排序不适宜于记录较少的文件。堆排序是就地排序,辅助空间为O(1)三.交换排序
    ①.冒泡排序(稳定的)
    冒泡排序的最坏时间复杂度为O(n^2)
    由于它的记录移动次数较多,故平均性能比直接插入排序要差得多
    ②.快速排序:(不稳定的)
    四.归并排序
    时间复杂度O(nlog2n),空间复杂度O(n)
    五.基数排序
    基数排序的基本思想是:从低位到高位依次对待排序的关键码进行分配和收集,经过d趟分配和收集,就可以得到一个有序序列.


  • 相关阅读:
    ios 数据类型转换 UIImage转换为NSData NSData转换为NSString
    iOS UI 12 block传值
    iOS UI 11 单例
    iOS UI 08 uitableview 自定义cell
    iOS UI 07 uitableviewi3
    iOS UI 07 uitableviewi2
    iOS UI 07 uitableview
    iOS UI 05 传值
    iOS UI 04 轨道和动画
    iOS UI 03 事件和手势
  • 原文地址:https://www.cnblogs.com/Coder-Pig/p/6707918.html
Copyright © 2011-2022 走看看