作家
登录

十大经典排序算法的JS版

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

4.希尔排序(Shell Sort)

改进后的算法实现为:

  1. function bubbleSort3(arr3) { 
  2.  
  3.     var low = 0; 
  4.  
  5.     var high= arr.length-1; //设置变量的初始值 
  6.  
  7.     var tmp,j; 
  8.  
  9.     console.time('2.改进后冒泡排序耗时'); 
  10.  
  11.     while (low < high) { 
  12.  
  13.         for (j= low; j< high; ++j) //正向冒泡,找到最大年夜者 
  14.  
  15.             if (arr[j]> arr[j+1]) { 
  16.  
  17.                 tmp = arr[j]; arr[j]=arr[j+1];arr[j+1]=tmp; 
  18.  
  19.             } 
  20.  
  21.         --high;                 //修改high值, 前移一位 
  22.  
  23.         for (j=high; j>low; --j) //反向冒泡,找到最小者 
  24.  
  25.             if (arr[j]<arr[j-1]) { 
  26.  
  27.                 tmp = arr[j]; arr[j]=arr[j-1];arr[j-1]=tmp; 
  28.  
  29.             } 
  30.  
  31.         ++low;                  //修改low值,后移一位 
  32.  
  33.     } 
  34.  
  35.     console.timeEnd('2.改进后冒泡排序耗时'); 
  36.  
  37.     return arr3; 
  38.  
  39.  
  40. var arr=[3,44,38,5,47,15,36,26,27,2,46,4,19,50,48]; 
  41.  
  42. console.log(bubbleSort3(arr));//[2, 3, 4, 5, 15, 19, 26, 27, 36, 38, 44, 46, 47, 48, 50]  

三种办法耗时比较:

由图可以看出改进后的冒泡排序明显的时光复杂度更低,耗时更短了。读者自行测验测验可以戳这,博主在github建了个库,读者可以Clone下来本地测验测验。此博文合营源码体验更棒哦~~~

冒泡排序动图演示: 

(3)算法分析

  • 最佳情况:T(n) = O(n)

当输入的数据已经是正序时(都已经是正序了,为毛何必还排序呢….)

  • 最差情况:T(n) = O(n2)

JavaScript动图演示:

当输入的数据是反序时(卧槽,我直接反序不就完了….)

  • 平均情况:T(n) = O(n2)

表示最稳定的排序算法之一(这个稳定不是指算法层面汕9依υ?定哈,信赖聪慧的你能明白我说的意思2333),因为无论什么数据进去都是O(n²)的时光复杂度…..所以用到它的时刻,数据范围越小越好。独一的好处可能就是不占用额外的内存空间了吧。理论上讲,选择排序可能也是日常平凡排序一般人想到的最多的排序办法了吧。


  推荐阅读

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

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


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

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

关键词: 探索发现

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

网友点评
自媒体专栏

评论

热度

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