归并排序动图演示:
(3)算法分析
- 最佳情况:T(n) = O(n)
- 最差情况:T(n) = O(nlogn)
- 平均情况:T(n) = O(nlogn)
6.快速排序(Quick Sort)
快速排序的名字起的是简单粗暴,因为一听到这个名字你就知道它存在的意义,就是快,并且效力高! 它是处理大年夜数据最快的排序算法之一了。
(1)算法简介
快速排序的根本思惟:经由过程一趟排序将待排记录分隔成自力的两部分,个一一部分记录的关键字均比另一部分的关键字小,则可分别对这两部分记录持续进行排序,以达到全部序列有序。
(2)算法描述和实现
快速排序应用分治法来把一个串(list)分为两个子串(sub-lists)。具体算法描述如下:
- <1>.大年夜数列中挑出一个元素,称为 “基准”(pivot);
- <2>.从新排序数列,所有元素比基准值小的摆放在基准前面,所有元素比基准值大年夜的摆在基准的后面(雷同的数可以到任一边)。在这个分区退出之后,该基准就处于数列的中心地位。这个称为分区(partition)操作;
- <3>.递归地(recursive)把小于基准值袈洫素的子数列和大年夜于基准值袈洫素的子数列排序。Javascript代码实现:


快速排序动图演示:

传统冒泡排序中每一趟排序操作只能找到一个最大年夜值或最小值,我们推敲应用在每趟排序中进行正向和反向两遍冒泡的办法一次可以获得两个最终值(最大年夜者和最小者) , 大年夜而使排序趟数几乎削减了一半。
(3)算法分析
- 最佳情况:T(n) = O(nlogn)
- 最差情况:T(n) = O(n2)
- 平均情况:T(n) = O(nlogn)
7.堆排序(Heap Sort)
堆排序可以说是一种应用堆的概念来排序的选择排序。
(1)算法简介
堆排序(Heapsort)是指应用堆这种数据构造所设计的一种排序算法。聚积是一个近似完全二叉树的构造,并同时知足聚积的性质:即子结点的键值或索引老是小于(或者大年夜于)它的父节点。
(2)算法描述和实现
选择排序(Selection-sort)是一种简单直不雅的排序算法。它的工作道理:起首在未排序序列中找到最小(大年夜)元素,存放到排序序列的肇端地位,然后,再大年夜残剩未排序元素中持续寻找最小(大年夜)元素,然后放到已排序序列的末尾。以词攀类推,直到所有元素均排序完毕。
具体算法描述如下:
- <1>.将初始待排序关键字序列(R1,R2….Rn)构建成大年夜顶堆,此堆为初始的无序区;
- <2>.将堆顶元素R[1]与最后一个元素R[n]交换,此时获得新的无序区(R1,R2,……Rn-1)和新的有序区(Rn),且知足R[1,2…n-1]<=R[n];
- <3>.因为交换后新的堆顶R[1]可能违背堆的性质,是以须要对当前无序区(R1,R2,……Rn-1)调剂为新堆,然后再次将R[1]与无序区最后一个元故旧换,获得新的无序区(R1,R2….Rn-2)和新的有序区(Rn-1,Rn)。赓续反复此过程直到有序区的元素个数为n-1,则全部排序过程完成。

堆排序动图演示:

(3)算法分析
- 最佳情况:T(n) = O(nlogn)
- 最差情况:T(n) = O(nlogn)
- 平均情况:T(n) = O(nlogn)
8.计数排序(Counting Sort)
计数排序的核心在于将输入的数据值转化为键存储在额外开辟的数组空间中。
作为一种线性时光复杂度的排序,计数排序请求输入的数据必须是有肯定范围的┞符数。
(1)算法简介
计数排序(Counting sort)是一种稳定的排序算法。计数排序应用一个额外的数组C,个中第i个元素是待排序数组A中值等于i的元素的个数。然后根据数组C来将A中的元素排到精确的地位。它只能半数数进行排序。
(2)算法描述和实现
推荐阅读 【技巧沙龙】AI开辟者拭魅战营-7分钟打造1个定制技能。7月22号,我们等你一路!
作为一个工科的学生,我们经久以来会应用比如像是矩阵以及行列式这些在线性代数上的常识,在这篇文┞仿中,我>>>详细阅读 本文标题:十大经典排序算法的JS版 地址:http://www.17bianji.com/lsqh/36267.html 1/2 1

网友点评
精彩导读
科技快报
品牌展示