这篇文章主要介绍了js实现的计数排序与基数排序算法,结合实例形式简单分析了计数排序与基数排序的原理与js实现技巧,需要的朋友可以参考下
本文实例讲述了JS实现的计数排序与基数排序算法。分享给大家供大家参考,具体如下:
计数排序
计数排序就是简单的桶排序,一个桶代表数组中一个数出现的个数,所以需要一个和数组数字范围一样大的辅助数组,一般用在范围小于100的排序,时间复杂度为O(n),空间复杂度为数组的数字范围。
/**
* 范围在 start - end 之间的排序
* 计数排序需要辅助数组,该辅助数组的长度是待排序数组的范围,所以一般用作范围小于100的排序
*/
function countSort(arr, start, end) {
var len = arr.length;
// 桶数组
var suportArr = new Array(end - start + 1);
// 结果数组
var resArr = new Array(len);
// 初始化桶数组
for (i = 0; i = 0; i--) {
resArr[suportArr[arr[i]] - 1] = arr[i];
suportArr[arr[i]]--;
}
return resArr;
}
基数排序
基数排序是多躺的桶排序
var radix = 16; // 基数,可以为任何数,越大趟数越小,但是桶数越多,最好根据最大数字进行定义。
function _roundSort(arr, round, radix) {
var buckets = new Array(radix);
for (let i = 0; i <p>上面是我整理给大家的,希望今后会对大家有帮助。</p><div class="aritcle_card flexRow artxards">
<div class="artcardd flexRow">
<a class="aritcle_card_img" rel="nofollow" href="/xiazai/skill9063" title="chartjs-reporter"><img
src="https://img.php.cn/upload/skill/000/000/081/179239514984446.jpg" alt="chartjs-reporter" onerror="this.onerror='';this.src='/static/lhimages/moren/morentu.png'" ></a>
<div class="aritcle_card_info flexColumn">
<a rel="nofollow" href="/xiazai/skill9063" title="chartjs-reporter" class="overflowclass">chartjs-reporter</a>
<p class="overflowclass">此技能用于在用户需要将结构化数据(查询结果、CSV 摘要、JSON 记录或 Python 字典/列表)转换为独立的 HTML 页面时使用。</p>
</div>
<a rel="nofollow" href="/xiazai/skill9063" title="chartjs-reporter" class="aritcle_card_btn flexRow flexcenter"><b></b><span>下载</span>
</a>
</div>
</div><p>相关文章:</p><p><a href="http://www.php.cn/js-tutorial-404455.html" target="_blank">在Mac中如何安装nvm(详细教程)</a></p><p><a href="http://www.php.cn/js-tutorial-404452.html" target="_blank">在微信小程序中如何实现时间功能</a></p><p><a href="http://www.php.cn/js-tutorial-404449.html" target="_blank">在webpack中有关生成代码探索</a></p>










