zoukankan      html  css  js  c++  java
  • 排序应用

    稳定性

    如果一个排序算法能够保留数组中重复元素的相对位置则可以被称为是稳定

    • 稳定的排序算法:插入排序、归并排序
    • 不稳定的排序算法:选择排序、希尔排序、快速排序和堆排序

    一般只有在稳定性是必要的情况下,稳定的排序算法才有优势。

    各种排序算法的性能特点

    算法 是否稳定 是否为原地排序 时间复杂度 空间复杂度 备注
    选择排序 N^2 1
    插入排序 介于 N 和 N^2 之间 1 取决于输入元素的排列情况
    希尔排序 NlogN? 1
    快速排序 NlogN lgN 运行效率由概率提供保证
    三向快速排序 介于 N 和 NlogN 之间 lgN 运行效率由概率保证,同时也取决于输入元素的分布情况
    归并排序 NlogN N
    堆排序 NlogN 1
    • 快速排序是最快的通用排序算法。
    • 如果稳定性重很重要而空见又不是问题,归并排序可能是最好的选择

    Java 系统库的排序算法

    Java 的系统程序员选择对原始数据类型使用(三向切分的)快速排序,对引用类型使用归并排序。暗示着用速度和空间(对于原始数据类型)来换取稳定性(对于引用类型)。

  • 相关阅读:
    POJ2299--树状数组求逆序数
    每周总结
    2016湖南省赛--A题--2016
    ACM暑期训练总结
    jQuery实现拖动布局并将排序结果保存到数据库
    TP3.2整合kindeditor
    TP3.2整合uplodify文件上传
    Sublime Text3 使用
    ThinkPHP AJAX分页及JS缓存的应用
    Thinkphp分页类使用
  • 原文地址:https://www.cnblogs.com/aiguozou/p/11408905.html
Copyright © 2011-2022 走看看