js实现基数排序

/**

    * 基数排序 O(d(n+radix))

    * radix 基数 d为堆数

    *

    * @param {any} arr

    * @param {any} radix 基数

    * @returns

    *

    * @memberof sort

    */

    sort8(arr, radix) {

        let max = this.findMax(arr, radix); // 找出堆数

        console.log(max);

        for(let i = 1;i <= max;i++) {

            this.buildBy(arr, i, radix);

        }

        return arr;

    }

    /**

    * 找出堆数

    *

    * @param {any} arr

    * @param {any} radix 基数

    * @returns 堆数

    *

    * @memberof sort

    */

    findMax(arr, radix) {

        let max = 1;

        let len = arr.length;

        for (let i = 0; i < len;i++) {

            while(Math.floor(arr[i] / (radix** (max- 1))) > 1) {

                max++;

            }

        }

        return max;

    }

    /**

    * 分桶排序

    *

    * @param {any} arr

    * @param {any} index 当前桶

    * @param {any} radix 基数

    *

    * @memberof sort

    */

    buildBy(arr, index, radix) {

        let bockets = new Array(radix);

        for (let i = 0;i < radix;i++) {

            bockets[i] = [];

        }

        for (let i = 0;i < arr.length;i++) {

            let remainder = Math.floor(arr[i] / (radix ** (index - 1))) % radix;

            bockets[remainder].push(arr[i]);

        }

        var temp = 0;

        for (let i = 0;i < bockets.length;i++) {

            for (let j = 0;j< bockets[i].length;j++) {

                arr[temp] = bockets[i][j];

                temp++

            }

        }

    }

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 前言 排序算法可能是你学编程第一个学习的算法,还记得冒泡吗? 当然,排序和查找两类算法是面试的热门选项。如果你是一...
    无脚鸟30阅读 4,503评论 0 0
  • 排序算法说明 (1)排序的定义:对一序列对象根据某个关键字进行排序; 输入:n个数:a1,a2,a3,…,an 输...
    code武阅读 3,890评论 0 0
  • 1、冒泡排序 最简单的一种排序算法。假设长度为n的数组arr,要按照从小到大排序。则冒泡排序的具体过程可以描述为:...
    Joe_2e0c阅读 3,345评论 0 0
  • 0、算法概述 0.1 算法分类 十种常见排序算法可以分为两大类: 非线性时间比较类排序:通过比较来决定元素间的相对...
    Demon_code阅读 4,659评论 0 2
  • 今天在外面跑了好多地方! 起床:7:20 就寝:24:00 天气:晴 心情:开心 纪念日:和老爸逛超市(我老爸一般...
    姬樱阅读 1,560评论 0 3