美文网首页
排序算法总结

排序算法总结

作者: One_Hund | 来源:发表于2018-09-18 00:20 被阅读0次
一、内排序算法分为:插入排序、交换排序、选择排序和归并排序四类
  • 希尔排序相当于直接插入排序的升级,它们同属于插入排序类;
  • 堆排序相当于简单选择排序的升级,它们同属于选择排序类;
  • 快速排序相当于冒泡排序的升级,它们同属于交换排序类。
二、7种算法的性能指标:
三、性能分析

从算法的简单性来看,我们将7种算法分为两类:

  • 简单算法:冒泡、简单选择、直接插入
  • 改进算法:希尔、堆、归并、快速

  • 时间复杂度看:
  • 平均情况来看,改进算法中,堆、归并、快速排序要胜过希尔排序,并远远胜过冒泡、简单选择、直接插入这3种简单算法
  • 最好情况看,反而冒泡和直接插入排序要更胜一筹,也就是说,如果你的待排序序列总是基本有序,反而不应该考虑复杂的改进算法
  • 最坏情况看,堆排序与归并排序又强过快速排序以及其他简单排序。
  • 从这三组时间复杂度的数据对比中,我们可以得出这样一个认识:堆排序和归并排序就像两个参加奥数考试的优等生,心理素质强,发挥稳定。而快速排序像是很情绪化的天才,心情好时表现极佳,碰到较糟糕环境会变得差强人意。但是他们如果都来比赛计算个位数的加减法,它们反而算不过成绩极普通的冒泡和直接插入。

  • 空间复杂度看,堆排序是好的选择

  • 稳定性来看,归并排序是好的选择

总之,从综合各项指标来说,经过优化的快速排序是性能最好的排序算法,但是不同的场合我们也应该考虑使用不同的算法来应对它。

参考文献:《大话数据结构》—— 程杰著

相关文章

  • iOS算法总结-堆排序

    iOS算法总结-堆排序 iOS算法总结-堆排序

  • iOS算法总结-冒泡排序

    iOS算法总结-冒泡排序 iOS算法总结-冒泡排序

  • 算法学习(1)-排序算法

    八大排序算法九大排序算法再总结[经典排序算法][集锦][直观学习排序算法] 视觉直观感受若干常用排序算法 快速排序...

  • 面试常问的排序算法

    排序算法总结 排序是算法问题中的经典问题。为什么要总结排序算法呢?你懂的 : (假设所有的排序都是要求最终结果为:...

  • 浅谈排序算法

    排序算法有很多种,今天先谈谈一些简单的排序算法。包括桶排序、冒泡排序和快速排序算法。后期总结各种排序算法。 桶排序...

  • 排序算法

    一、排序算法总结 排序算法题目 排序算法快速排序堆排序归并排序 应用最小K个数(TopK问题)215.数组中的第K...

  • 一文搞定十大经典排序算法(Java实现)

    本文总结十大经典排序算法及变形,并提供Java实现。参考文章:十大经典排序算法总结(Java语言实现)快速排序算法...

  • Swift的十大经典排序算法总结

    Swift的十大经典排序算法总结 排序算法是《数据结构与算法》中最基本的算法之一。排序算法可以分为内部排序和外部排...

  • 算法-排序算法总结

    排序类型总结 1 排序算法基础实现 2 排序算法应用 2.1 基础排序 2.2 计数排序应用 2.3 快排应用 2...

  • 排序算法最强总结及其代码实现(Python/Java)

    前言 本文总结了常用的全部排序算法,内容包括: 排序算法的定义和思路 排序算法的代码实现:Python和Java,...

网友评论

      本文标题:排序算法总结

      本文链接:https://www.haomeiwen.com/subject/vdwjnftx.html