作家
登录

十大经典排序算法的JS版

作者: 来源: 2017-07-18 14:59:52 阅读 我要评论

(3)算法分析

  • 最佳情况:T(n) = O(nlog2 n)
  • 最坏情况:T(n) = O(nlog2 n)
  • 平均情况:T(n) =O(nlog n)

5.归并排序(Merge Sort)

和选择排序一样,归并排序的机能不受输入数据的影响,但表示比选择排序好的多,因为始终都是O(n log n)的时光复杂度。价值是须要额外的内存空间。

(1)算法简介

归并排序是建立在归并操作上的一种有效的排序算法。该算法是采取分治法(Divide and Conquer)的一个异常典范的应用。归并排序是一种稳定的排序办法。将已有序的子序列归并,获得完全有序的序列;即先使每个子序列有序,再使子序列段间有序。若将两个有序表归并成一个有序表,称为2-路归并。

(2)算法描述和实现

具体算法描述如下:

  • <1>.把长度为n的输入序列分成两个长度为n/2的子序列;
  • <2>.对这两个子序列分别采取归并排序;
  • <3>.将两个排序好的子序列归并成一个最终的排序序列。

Javscript代码实现:

  1. function mergeSort(arr) {  //采取自上而下的递归办法 
  2.  
  3.     var len = arr.length; 
  4.  
  5.     if(len < 2) { 
  6.  
  7.         return arr; 
  8.  
  9.     } 
  10.  
  11.     var middle = Math.floor(len / 2), 
  12.  
  13.         left = arr.slice(0, middle), 
  14.  
  15.         right = arr.slice(middle); 
  16.  
  17.     return merge(mergeSort(left), mergeSort(right)); 
  18.  
  19.  
  20. function merge(leftright
  21.  
  22.  
  23.     var result = []; 
  24.  
  25.     console.time('归并排序耗时'); 
  26.  
  27.     while (left.length && right.length) { 
  28.  
  29.         if (left[0] <= right[0]) { 
  30.  
  31.             result.push(left.shift()); 
  32.  
  33.         } else { 
  34.  
  35.             result.push(right.shift()); 
  36.  
  37.         } 
  38.  
  39.     } 
  40.  
  41.     while (left.length) 
  42.  
  43.         result.push(left.shift()); 
  44.  
  45.     while (right.length) 

      推荐阅读

      一文读懂矩阵的秩和行列式的意义

    【技巧沙龙】AI开辟者拭魅战营-7分钟打造1个定制技能。7月22号,我们等你一路! 作为一个工科的学生,我们经久以来会应用比如像是矩阵以及行列式这些在线性代数上的常识,在这篇文┞仿中,我>>>详细阅读


    本文标题:十大经典排序算法的JS版

    地址:http://www.17bianji.com/lsqh/36267.html

关键词: 探索发现

乐购科技部分新闻及文章转载自互联网,供读者交流和学习,若有涉及作者版权等问题请及时与我们联系,以便更正、删除或按规定办理。感谢所有提供资讯的网站,欢迎各类媒体与乐购科技进行文章共享合作。

网友点评
自媒体专栏

评论

热度

精彩导读
栏目ID=71的表不存在(操作类型=0)