方式1: 使用sort 方法 ----

        // 方法1 使用sort 方法
var arr = [1,2,3,4,5,6,7,8];
function foo(arr) {
var cloneArr = arr.concat();
cloneArr.sort(function (n1,n2) {
return Math.random() - 0.5 ;
});
return cloneArr;
}
for (var i= 0 ; i < arr.length ; i++ ){
console.log(foo(arr));
}

方式2:使用递归

    <script>
var arr = [1,2,3,4,5,6,7,8]; function foo(arr) {
//使用concat 复制一个数组中
var cloneArr = arr.concat();
var result = [];
(function name(params) {
if (!cloneArr.length) return ;
var index = Math.floor(Math.random() * cloneArr.length);
result = result.concat(cloneArr.splice(index, 1));
arguments.callee();
})()
return result;
}
for (let i = 0; i < arr.length; i++) {
console.log(foo(arr))
}
</script>
</html>

方式3:使用迭代

       var arr = [1, 2, 3, 4, 5, 6, 7, 8];
function foo(arr) {
//使用concat 复制一个数组中
var cloneArr = arr.concat();
var result = []; var len = cloneArr.length; for(var i= 0 ;i< len ;i++){
var index = Math.floor(Math.random()* cloneArr.length);
result = result.concat(cloneArr.splice(index,1));
}
return result ;
}
for (let i = 0; i < arr.length; i++) {
console.log(foo(arr))
}

方法4: 洗牌方式

                   var arr = [1, 2, 3, 4, 5, 6, 7, 8];
function foo(arr) {
//使用concat 复制一个数组中
var cloneArr = arr.concat(); for (var i = 0; i < cloneArr.length; i++) {
var index = Math.floor(Math.random() * cloneArr.length);
var temp = cloneArr[index];
cloneArr[index] = cloneArr[i];
cloneArr[i] = temp;
}
return cloneArr;
}
for (let i = 0; i < arr.length; i++) {
console.log(foo(arr))
}

综合四种方法 -----认为用第四钟洗牌方式更佳!

如何随机排序数组?使用多种方式!递归,迭代,洗牌,sort方法!的更多相关文章

  1. 递归迭代vector三种方法实现二路归并排序

    https://mp.csdn.net/mdeditor/84933084# 附链接

  2. C++版 - 剑指offer面试题38:数字在已排序数组中出现的次数

    数字在已排序数组中出现的次数 提交网址: http://www.nowcoder.com/practice/70610bf967994b22bb1c26f9ae901fa2?tpId=13&t ...

  3. 剑指offer——python【第37题】数字在排序数组中出现的次数

    题目描述 统计一个数字在排序数组中出现的次数 思路 最贱的方法依旧是count计数.. 当然,,看到有序数组就应该想到二分法,找到重复数字左边和右边的数字,然后两个相减就可以了 解答 方法1 coun ...

  4. 剑指offer37:统计一个数字在排序数组中出现的次数

    1 题目描述 统计一个数字在排序数组中出现的次数. 2 思路和方法 (1)查找有序数组,首先考虑使用二分查找,使时间复杂度为O(log n).更改二分查找的条件,不断缩小区间,直到区间头和区间尾均为k ...

  5. [大牛翻译系列]Hadoop(13)MapReduce 性能调优:优化洗牌(shuffle)和排序阶段

    6.4.3 优化洗牌(shuffle)和排序阶段 洗牌和排序阶段都很耗费资源.洗牌需要在map和reduce任务之间传输数据,会导致过大的网络消耗.排序和合并操作的消耗也是很显著的.这一节将介绍一系列 ...

  6. PAT自测_打印沙漏、素数对猜想、数组元素循环右移、数字加倍重排、机器洗牌

    -自测1. 打印沙漏() 本题要求你写个程序把给定的符号打印成沙漏的形状.例如给定17个“*”,要求按下列格式打印 ***** *** * *** ***** 所谓“沙漏形状”,是指每行输出奇数个符号 ...

  7. 手写面试编程题- 数组去重 深拷贝 获取文本节点 设置奇数偶数背景色 JS中检测变量为string类型的方法 第6题闭包 将两个数组合并为一个数组 怎样添加、移除、移动、复制、创建和查找节点? 继承 对一个数组实现随机排序 让元素水平 垂直居中的三种方式 通过jQuery的extend方法实现深拷贝

    第1题==>实现数组去重 通过 new Set(数组名) // var arr = [12, 12, 3, 4, 5, 4, 5, 6, 6]; // var newarr1 = new Set ...

  8. java数组随机排序实现代码

    例一 代码如下 复制代码 import java.lang.Math;import java.util.Scanner;class AarrayReverse{ public static void ...

  9. JS数组随机排序

    var arr=[1,2,3,4,5]; arr.sort(function(a,b){ var v=Math.random()>0.5?1:-1; console.log(a,b,v); re ...

随机推荐

  1. SpringBoot的事件监听

    事件监听的流程分为三步:1.自定义事件,一般是继承ApplicationEvent抽象类.2.定义事件监听器,一般是实现ApplicationListener接口.3.a.启动的时候,需要将监听器加入 ...

  2. WPF自定义仪表盘控件

    闲来无事,分享一个仪表盘 源码: 直接复制代码即可运行,=.=! <Window x:Class="TGP.InstrumentationDemo.MainWindow" x ...

  3. RPC远程过程调用

    什么是RPC: 将一个函数运行在远程计算机上并且等待获取那里的结果,这个称作RPC: (Remote Procedure Call远程过程调用) RPC是一个计算机通信协议. rpc指的是在计算机A上 ...

  4. 学习现代 JavaScript 编程的最佳教程

    天天编码 , 版权所有丨本文标题:0.0 学习现代 JavaScript 编程的最佳教程 转载请保留页面地址:http://www.tiantianbianma.com/the-modern-java ...

  5. 在Windows上使用Let加密IIS

    在Windows上使用Let加密IIS https://weblog.west-wind.com/posts/2016/Feb/22/Using-Lets-Encrypt-with-IIS-on-Wi ...

  6. 腾讯云服务器、nginx部署loopback

    最近在研究学习nginx,买了腾讯云服务器.在阿里上申请了域名,部署项目遇到很多问题记录一下,以备后用: 1.在腾讯服务器买好,阿里域名申请好后(也可以在腾讯上申请域名),需要添加安全组,创建不同的规 ...

  7. iOS调用系统发送短信和邮件分享

    //发送邮件 -(void)sendMail:(NSString*)subject content:(NSString*)content{ MFMailComposeViewController*co ...

  8. java自动化-数据驱动junit演示,下篇

    本文旨在帮助读者介绍,如何使用excle实现数据驱动 本文是上文https://www.cnblogs.com/xuezhezlr/p/9096063.html的继续,如果没看上文建议自己看一下,对理 ...

  9. 数据分析 大数据之路 五 pandas 报表

    pandas:  在内存中或对象,会有一套基于对象属性的方法,   可以视为 pandas 是一个存储一维表,二维表,三维表的工具, 主要以二维表为主 一维的表, (系列(Series)) 二维的表, ...

  10. FCC学习笔记(三)

    Using Objects for Lookups // 定义 phoneticLookupfunction phoneticLookup(val) { var result = "&quo ...