方式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. Intellij IDEA 从数据库生成 JPA Entity

    首先,需要从调用 Database 窗口 View>Tool Windows>Database 添加到数据库的连接 选择数据的表,然后右击 选择 Scripted Extensions & ...

  2. RabbitMQ教程

    1.引言 RabbitMQ——Rabbit Message Queue的简写,但不能仅仅理解其为消息队列,消息代理更合适.RabbitMQ 是一个由 Erlang 语言开发的AMQP(高级消息队列协议 ...

  3. CentOS7使用yum安装配置Redis

    >>>>>>>>>>>>>>>>>>>>>>>>> ...

  4. 大数据学习之HDFS基本API操作(上)06

    package it.dawn.HDFSPra; import java.io.FileNotFoundException; import java.io.IOException; import ja ...

  5. python面试题之Python支持什么数据类型?

    所属网站分类: 面试经典 > python 作者:外星人入侵 链接:http://www.pythonheidong.com/blog/article/67/ 来源:python黑洞网,专注py ...

  6. angularjs和ajax的结合使用 (三)

    转眼九月份了,忙忙碌碌 发现今年还没开过张,写一篇吧. 15年在空闲时就倒腾过angularjs那玩意儿 ,觉得还是挺好的,李金龙那厚厚的一本书,只不过没有系统化应用.最主要的是原来有一个东西没有用到 ...

  7. Spring系列__02IOC模块简介

    Spring的两大核心功能就是IOC和AOP,这篇文章主要介绍IOC. 简单来说,在面向对象思想下,A类中有一个B类的属性, 那么我们在创建A类时往往需要同时创建一个B类的对象,以便A类对其进行调用. ...

  8. PHP中使用CURL之php curl详细解析

    在正式讲怎么用之前啊,先提一句,你得先在你的PHP环境中安装和启用curl模块,具体方式我就不讲了,不同系统不同安装方式,可以google查一下,或者查阅PHP官方的文档,还挺简单的. 1. 拿来先试 ...

  9. python爬取网页内容demo

    #html文本提取 from bs4 import BeautifulSoup html_sample = '\ <html> \ <body> \ <h1 id = & ...

  10. Hive表生成函数explode讲解

    Hive中的表分析函数接受零个或多个输入,然后产生多列或多行输出. 1.explode函数 explode函数以array类型数据输入,然后对数组中的数据进行迭代,返回多行结果,一行一个数组元素值 A ...