JS如何实现的计数排序与基数排序算法

  介绍

这篇文章将为大家详细讲解有关JS如何实现的计数排序与基数排序算法,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。

JS是什么

JS是JavaScript的简称,它是一种直译式的脚本语言,其解释器被称为JavaScript引擎,是浏览器的一部分,主要用于web的开发,可以给网站添加各种各样的动态效果,让网页更加美观。

<强>计数排序

计数排序就是简单的桶排序,一个桶代表数组中一个数出现的个数,所以需要一个和数组数字范围一样大的辅助数组,一般用在范围小于100的排序,时间复杂度为O (n),空间复杂度为数组的数字范围。

/* *   ,*范围在,start 作用;最终获得之间的排序   ,*计数排序需要辅助数组,该辅助数组的长度是待排序数组的范围,所以一般用作范围小于100的排序   ,*/function  countSort(加勒比海盗,开始,结束),{   var 才能;len =, arr.length;//才能,桶数组   var 才能;suportArr =, new 数组(最终获得成功;start  +, 1);//才能,结果数组   var 才能;resArr =, new 数组(len);//才能,初始化桶数组   for 才能;(小姐:=,0;,小姐:& lt;, suportArr.length;,我+ +),{   ,,,suportArr[我],=,0;   ,,}//才能,待排序数组中的数组出现,在桶子对应位置+ 1代表这个数出现的个数+ 1了   for 才能;(let 小姐:=,0;,小姐:& lt;, len;,我+ +),{   ,,,suportArr arr[[我]]+ +;   ,,}//,,,从第1项开始,桶数组加上前一个桶的个数,现在辅助数组的意义变成了每一项的排名了。   for 才能;(let 小姐:=,1;,小姐:& lt;, suportArr.length;,我+ +),{   ,,,suportArr[我],+=,suportArr[小姐,安康;1];   ,,}//才能,根据辅助数组的排名,从后往前赋值   for 才能;(let 小姐:=,len 作用;1;,小姐:祝辞=,0;,我——),{   ,,,resArr [suportArr arr[[我]],安康;1],=,arr[我];   ,,,suportArr [arr[我]]——;   ,,}   return 才能;resArr;   }

<>强基数排序

基数排序是多躺的桶排序

var  radix =, 16,,//,基数,可以为任何数,越大趟数越小,但是桶数越多,最好根据最大数字进行定义。   arr function  _roundSort(,,,,基数),{   var 才能;buckets =, new 数组(基数);   for 才能;(let 小姐:=,0;,小姐:& lt;,基数;,我+ +),{   ,,,桶[我],=,[];   ,,}//,才能将数组中的数放进对应的桶子中   for 才能;(let 小姐:=,0;,小姐:& lt;, arr.length;,我+ +),{   ,,,let  remainder =, Math.floor (arr[我],/,(radix  * *, (round 作用;1))),%,基数;   ,,,桶(剩余).push (arr[我]);   ,,}//,才能将数组重新根据桶子进行排序   var 才能;index =, 0;   for 才能;(let 小姐:=,0;,小姐:& lt;, buckets.length;,我+ +),{   ,,,for  (let  j =, 0;, j  & lt;,桶[我]. length;, j + +), {   ,,,,,arr(指数+ +),=,桶[我][j];   ,,,}   ,,}   }   function  radixSort(加勒比海盗,圆),{   for 才能;(let 小姐:=,1;,小姐:& lt;=,轮;,我+ +),{   ,,,_roundSort(加勒比海盗,,我,,基数);   ,,}   return 才能,加勒比海盗;   }   console.log (radixSort ([10、5、5、50、0155、4622、5、1, 4, 2154],, 4));

关于“JS如何实现的计数排序与基数排序算法”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,使各位可以学到更多知识,如果觉得文章不错,请把它分享出去让更多的人看的到。

JS如何实现的计数排序与基数排序算法