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趟分配和收集,就可以得到一个有序序列.


  • 相关阅读:
    c#9
    Jmeter--自己写并发压测脚本一定会遇到的类
    Jmeter从数据库获取测试数据, 作为下一个接口参数方法
    Jmeter-从数据库中获取数据并作为变量传输
    Java文件操作
    Java读取文件
    Java字符串处理——String类常用方法
    Eclipse导出可执行jar包步骤
    批处理常用DOS命令之for简单 002
    批处理常用DOS命令之for简单 001
  • 原文地址:https://www.cnblogs.com/Coder-Pig/p/6707918.html
Copyright © 2011-2022 走看看