JS排序算法总结:八种算法对比

Posted cassiehouse

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JS排序算法总结:八种算法对比相关的知识,希望对你有一定的参考价值。

目的:掌握 排序算法的分类及不同算法复杂度的对比、搞清楚 XXX与数组初始状态无关分为几种情况:

  a、算法复杂度与初始状态无关;

  b、元素总比较次数与初始状态无关;

  c、元素总移动次数与初始状态无关。

1、算法分类

十种常见排序算法可以分为两大类:

  非线性时间比较类排序:通过比较来决定元素间的相对次序,由于其时间复杂度不能突破O(nlogn),因此称为非线性时间比较类排序。

  线性时间非比较类排序:不通过比较来决定元素间的相对次序,它可以突破基于比较排序的时间下界,以线性时间运行,因此称为线性时间非比较类排序。 

技术分享图片    

内部排序与外部排序:

另外,所有的排序都是在内存中做的,这里说的内部排序是指待排序的内容在内存中就可以完成,当待排序的文件很大,计算机内存不能容纳整个文件,这时候对文件就不能使用内部排序了,而外部排序是指待排序的内容不能在内存中一下子完成,它需要做内外存的内容交换,外部排序常采用的排序方法是归并排序。

2、算法复杂度

技术分享图片

基本概念:

  稳定:如果a原本在b前面,而a=b,排序之后a仍然在b的前面。

  不稳定:如果a原本在b的前面,而a=b,排序之后 a 可能会出现在 b 的后面。

  时间复杂度:对排序数据的总的操作次数。反映当n变化时,操作次数呈现什么规律。

  空间复杂度:是指算法在计算机内执行时所需存储空间的度量,它也是数据规模n的函数。 

3、排序方法的算法复杂度与数组初始状态无关

 

 由表中红线标出的地方可以轻易得出以下四种排序方法的算法复杂度与数组的初试状态无关:

一堆(堆排序)乌龟(归并排序)选(选择排序)基(基数排序)友

其中,元素总比较次数与初始状态无关的有:选择排序基数排序

     元素总移动次数与初始状态无关的有:归并排序基数排序

 

以上是关于JS排序算法总结:八种算法对比的主要内容,如果未能解决你的问题,请参考以下文章

八种排序算法(内部排序)

十大经典算法排序总结对比

几种常见算法js

JS十大排序算法

js十大排序算法收藏

关于常用排序算法的一个总结