排序算法综述

作者: FromThenOn | 来源:发表于2017-01-09 19:59 被阅读42次

算法相关GitHub持续更新,欢迎打脸~
算法是从事程序开发人员永远绕不过去的一道门。虽然很多时候我们都会说,算法这东西只有面试时会用。但很多时候,算法已经被潜移默化的影响着我们,影响着我们写程序的方式。不知你有没有这样的经历,自己辛辛苦苦写了几百行代码,终于将要实现的功能实现了,正怡然自得之时,发现别人实现这个只用了一两行代码......</br>
总之,不管你学与不学,算法就在那里!
不管你屑与不屑,面试官的考题就在那里!
既然这是个装逼利器,既然是它总在无形中改变着什么,既然我们还有时间去征服,为什么不试试呢?</br>
大学时只是形式的学,为了一个分数,认为多一分浪费;现在想想人总是那么厚颜无耻,叫你学时不学,没人管了之后却又想着把失去的补回来,多说无益,开始鞭策自己,权当从零开始。</br>
排序是《数据结构》里一个重要的一脉,从我们日常的业务处理到数据库的排序,都有对排序算法应用的淋漓尽致,接下来的几个星期,征服排序算法!</br>

知己知彼,百战不殆
我们先回顾一下几种常见的常用算法,从不同的维度比较各个算法的优劣。</br>
时间复杂度
计算机科学中,算法的时间复杂度是一个函数,它定量描述了该算法的运行时间。这是一个关于代表算法输入值的字符串的长度的函数。时间复杂度常用大O符号表述,不包括这个函数的低阶项和首项系数。使用这种方式时,时间复杂度可被称为是渐近的,它考察当输入值大小趋近无穷时的情况。</br>
空间复杂度
空间复杂度(Space Complexity)是对一个算法在运行过程中临时占用存储空间大小的量度,记做S(n)=O(f(n))。比如直接插入排序的时间复杂度是O(n^2),空间复杂度是O(1) 。而一般的递归算法就要有O(n)的空间复杂度了,因为每次递归都要存储返回信息。一个算法的优劣主要从算法的执行时间和所需要占用的存储空间两个方面衡量。

排序法 最差时间分析 平均时间复杂度 稳定度 空间复杂度 类型
冒泡排序 O(n2) O(n2) 稳定 O(1) 交换
快速排序 O(n2) O(n log2n) 不稳定 O(log2n)~O(n) 交换
选择排序 O(n2) O(n2 ) 稳定 O(1) 选择
堆排序 O(n log2n) O(n log2n) 不稳定 O(1) 选择
插入排序 O(n2) O(n2) 稳定 O(1) 插入
希尔排序 O(n) O(n2) 不稳定 O(1) 插入
归并排序 O(n log2n) O(n log2n) 稳定 O(n) 其他
基数/桶排序 O(d*(r+n)) O(d*(r+n)) 稳定 O(rd+n) 分配
二叉树排序 O(n2) O(n log2n) 不一定 O(n) 其他

<i>@author Swift</i>
<i>@date 2017-1-8</i>

相关文章

  • 排序算法综述

    算法相关GitHub持续更新,欢迎打脸~算法是从事程序开发人员永远绕不过去的一道门。虽然很多时候我们都会说,算法这...

  • 归并排序

    综述 归并排序是建立在归并操作上的一种有效的排序算法.该算法是采用分治法(Divide and Conquer)的...

  • 排序算法概述

    在本系列中我们综述十个常用排序算法,分别是简单插入排序、希尔排序、简单选择排序、快速排序、冒泡排序、堆排序、归并排...

  • 插入排序

    综述 插入排序(Insertion-Sort)的算法描述是一种简单直观的排序算法.它的工作原理是通过构建有序序列,...

  • 希尔排序

    综述 1959年Shell发明,第一个突破O(n^2)的排序算法,是简单插入排序的改进版.它与插入排序的不同之处在...

  • 冒泡排序

    综述 冒泡排序是一种简单的排序算法.它重复地走访过要排序的数列,一次比较两个元素,如果它们的顺序错误就把它们交换过...

  • java实现快速排序、归并排序、希尔排序、基数排序算法...

    快速排序算法 归并排序算法 希尔排序算法 基数排序算法

  • 计数排序

    综述 计数排序不是基于比较的排序算法,其核心在于将输入的数据值转化为键存储在额外开辟的数组空间中.作为一种线性时间...

  • web开发需要知道的几个算法

    算法分类 快速排序算法 深度优先算法 广度优先算法 堆排序算法 归并排序算法

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

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

网友评论

    本文标题:排序算法综述

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