资讯专栏INFORMATION COLUMN

JavaScript数组随机排序

tianhang / 1277人阅读

摘要:不断从原数组中随机取一个元素放进新数组,同时删除原数组中该值,递归重复至全部取出。相当于递归退出

//不断从原数组中随机取一个元素放进新数组,同时删除原数组中该值,递归重复至全部取出。

function randomSort(arr, newArr) {
    var newArr = newArr || []
    if (arr.length == 1) {
        newArr.push(arr[0])
        return newArr; // 相当于递归退出
    }
 
    var random = Math.ceil(Math.random() * arr.length) - 1
    newArr.push(arr[random])
    arr.splice(random, 1)
    return randomSort(arr, newArr)
}
randomSort([1, 2, 3, 4, 5, 6, 7]); //[2, 3, 1, 5, 6, 7, 4]
randomSort([1, 2, 3, 4, 5, 6, 7]); //[3, 4, 2, 5, 1, 6, 7]

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/84594.html

相关文章

  • JavaScript专题之乱序

    摘要:源码地址为了简化篇幅,我们对这个数组进行分析,数组长度为,此时采用的是插入排序。插入排序的源码是其原理在于将第一个元素视为有序序列,遍历数组,将之后的元素依次插入这个构建的有序序列中。 JavaScript 专题系列第十九篇,讲解数组乱序,重点探究 Math.random() 为什么不能真正的乱序? 乱序 乱序的意思就是将数组打乱。 嗯,没有了,直接看代码吧。 Math.random ...

    I_Am 评论0 收藏0
  • JavaScript算法题之–随机数的生成

    摘要:准备面试,多看点题。来自雨夜带刀需求描述从一组有序的数据中生成一组随机并且不重复的数,类似于简单的抽奖程序的实现。 (准备面试,多看点题。来自雨夜带刀s Blog) 需求描述:从一组有序的数据中生成一组随机并且不重复的数,类似于简单的抽奖程序的实现。 先来生成一个有序的数组: var arr = [], length = 100, i = 0; for( ; i < length;...

    tigerZH 评论0 收藏0
  • 数组随机排序:洗牌算法(Fisher–Yates shuffle)

    摘要:代码实现代码一测试用例输出其中,代码二测试用例输出其中,参考资料洗牌算法学习笔记数组随机排序洗牌算法给数组随机排序洗牌算法原理 原理及步骤 1.定义一个数组(shuffled),长度(length)是原数组(arr)长度2.取 0 到 index (初始0) 随机值 rand, shuffled[index] = shuffled[rand], shuffled[rand] = arr...

    张金宝 评论0 收藏0
  • 学习笔记: JS数组

    摘要:数组元素甚至可以是对象或其它数组。它执行的是浅拷贝,这意味着如果数组元素是对象,两个数组都指向相同的对象,对新数组中的对象修改,会在旧的数组的相同对象中反应出来。 JS中的数组是弱类型的,数组中可以含有不同类型的元素。数组元素甚至可以是对象或其它数组。JS引擎一般会优化数组,按索引访问数组常常比访问一般对象属性明显迅速。数组长度范围 from 0 to 4,294,967,295(2^...

    archieyang 评论0 收藏0
  • JavaScript各种排序算法的实现及其速度性能分析

    摘要:今天我们来讨论的问题有两个如何用实现选择排序冒泡排序插入排序快速排序归并排序堆排序对生成的万个随机数进行排序,各个排序算法的性能分析。快速排序快速排序算法基本上是面试必考排序算法,也是传闻最好用的算法。 今天我们来讨论的问题有两个: 如何用JavaScript实现选择排序、冒泡排序、插入排序、快速排序、归并排序、堆排序; 对生成的10万个随机数进行排序,各个排序算法的性能分析。 创...

    yuanxin 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<