美文网首页
JS 中常用的几种随机排序

JS 中常用的几种随机排序

作者: 酷酷的凯先生 | 来源:发表于2021-04-14 14:27 被阅读0次

前言

在平常的开发工作中,我们经常会遇到排序的问题。比如按时间升/降序等诸如此类的排序,有兴趣的同学可以翻看我之前的文章 JS 中常见的排序算法
今天我们来说的是 随机排序 ,即把已有的顺序进行随机打乱从而形成新的乱序规则。一般常用的有四种:Sort迭代递归 和 经典的洗牌算法,接下来我们详细的看下具体怎么实现的。

Sort

这种方法随机排序的概率不是平均的,即有时候不够随机。
主要利用 Math.random 产生随机小数并减去 0.5 来随机生成 正/负.

function foo(arr){
    let clonrArr = arr.concat();
    clonrArr = clonrArr.sort(function(){
        return Math.random() - .5;
    })
    return clonrArr;
}

迭代

主要利用 Math.floor( Math.random() * clonrArr.length ) 找到随机索引位置

function foo(arr){
    let  clonrArr = arr.concat(), 
          len = clonrArr.length,
          index = null,
          result = [];
    for(let i= 0; i < len; i++){
        //得到随机的数组索引
        index = Math.floor( Math.random() * clonrArr.length );
        // result.push(clonrArr.splice(index,1)[0]);
        result = result.concat(clonrArr.splice(index,1));
    }
    // 返回结果
    return result;
}

递归

主要利用 Math.floor( Math.random() * clonrArr.length ) 找到随机索引位置

function foo(arr){
    let clonrArr = arr.concat(), 
         result = [],
         index = null;
    function fn(){
        // 递归结束条件
        if(!clonrArr.length) return;
        //得到随机的数组索引
        index = Math.floor( Math.random() * clonrArr.length );
        // result.push(clonrArr.splice(index,1)[0]);
        result = result.concat(clonrArr.splice(index,1));
        // 递归调用
        fn(); 
    }
    // 调用函数
    fn();
    // 返回结果
    return result;
}

洗牌算法

在迭代的基础上,交换了随机的位置,效率上是这几种算法中最快的一个

function foo(arr){
    let clonrArr = arr.concat(), 
         len = clonrArr.length,
         index = null;
    for(let i= 0; i < len; i++){
        index = Math.floor( Math.random() * clonrArr.length );
        [clonrArr[index], clonrArr[i]] = [clonrArr[i], clonrArr[index]];
    }
    // 返回结果
    return clonrArr;
}

相关文章

  • JS 中常用的几种随机排序

    前言 在平常的开发工作中,我们经常会遇到排序的问题。比如按时间升/降序等诸如此类的排序,有兴趣的同学可以翻看我之前...

  • js中几种常用排序算法

    给出一个数组var bb = [1,2,4,3,56,12,34,0];用几种常用方法对其升序排序: 1.sort...

  • JavaScript数组随机排序

    实现JS中数组随机排序的代码很简单,

  • js随机数

    js产生随机数通常是使用javascript的Math.random()函数 常用的几种方法: 1.Math.ra...

  • Node.js中几种文件路径的区别

    在Node.js中我们常用的几种文件路径有以下几种 __dirname __filename process.cw...

  • 2019-08-11

    Javascript中常用几种基础算法 1 排序-冒泡排序 //冒泡排序 function bubbleSort...

  • 全面介绍9种常用的排序算法

    本篇给大家介绍几种软件工程中常用的排序算法 所有排序算法的核心的代码都在《常用排序算法核心代码》[https://...

  • java排序方法资料

    java排序,效率高的是哪种排序方法 JAVA快速排序(高效) java中常用的几种排序算法 相关代码: /* *...

  • 冒泡排序、插入排序、选择排序

    一、排序方法与复杂度归类 几种最经典、最常用的排序方法:冒泡排序、插入排序、选择排序、快速排序、归并排序、计数排序...

  • js的几种排序

网友评论

      本文标题:JS 中常用的几种随机排序

      本文链接:https://www.haomeiwen.com/subject/pysklltx.html