如何随机排序数组?使用多种方式!递归,迭代,洗牌,sort方法!
方式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方法!的更多相关文章
- 递归迭代vector三种方法实现二路归并排序
https://mp.csdn.net/mdeditor/84933084# 附链接
- C++版 - 剑指offer面试题38:数字在已排序数组中出现的次数
数字在已排序数组中出现的次数 提交网址: http://www.nowcoder.com/practice/70610bf967994b22bb1c26f9ae901fa2?tpId=13&t ...
- 剑指offer——python【第37题】数字在排序数组中出现的次数
题目描述 统计一个数字在排序数组中出现的次数 思路 最贱的方法依旧是count计数.. 当然,,看到有序数组就应该想到二分法,找到重复数字左边和右边的数字,然后两个相减就可以了 解答 方法1 coun ...
- 剑指offer37:统计一个数字在排序数组中出现的次数
1 题目描述 统计一个数字在排序数组中出现的次数. 2 思路和方法 (1)查找有序数组,首先考虑使用二分查找,使时间复杂度为O(log n).更改二分查找的条件,不断缩小区间,直到区间头和区间尾均为k ...
- [大牛翻译系列]Hadoop(13)MapReduce 性能调优:优化洗牌(shuffle)和排序阶段
6.4.3 优化洗牌(shuffle)和排序阶段 洗牌和排序阶段都很耗费资源.洗牌需要在map和reduce任务之间传输数据,会导致过大的网络消耗.排序和合并操作的消耗也是很显著的.这一节将介绍一系列 ...
- PAT自测_打印沙漏、素数对猜想、数组元素循环右移、数字加倍重排、机器洗牌
-自测1. 打印沙漏() 本题要求你写个程序把给定的符号打印成沙漏的形状.例如给定17个“*”,要求按下列格式打印 ***** *** * *** ***** 所谓“沙漏形状”,是指每行输出奇数个符号 ...
- 手写面试编程题- 数组去重 深拷贝 获取文本节点 设置奇数偶数背景色 JS中检测变量为string类型的方法 第6题闭包 将两个数组合并为一个数组 怎样添加、移除、移动、复制、创建和查找节点? 继承 对一个数组实现随机排序 让元素水平 垂直居中的三种方式 通过jQuery的extend方法实现深拷贝
第1题==>实现数组去重 通过 new Set(数组名) // var arr = [12, 12, 3, 4, 5, 4, 5, 6, 6]; // var newarr1 = new Set ...
- java数组随机排序实现代码
例一 代码如下 复制代码 import java.lang.Math;import java.util.Scanner;class AarrayReverse{ public static void ...
- 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 ...
随机推荐
- net core 接入 Google Authenticator
一.什么谷歌身份验证器 1.英文名:Authenticator 许网站都需要绑定用以对相关账号进行“二步验证”保护,也叫“双重身份验证”的谷歌身份验证器,以加强安全级别. 2.作用: 这东西就相当于银 ...
- Centos安装Nginx(转载)
一.概述 项目总使用到Nginx的代理转发,学习和整理内容如下,由于是整理所以参考博客大牛的内容,有很多雷同之处,还望见谅(非抄袭对待) 二.Nginx依赖包的安装 yum install gcc y ...
- 【webpack系列】从零搭建 webpack4+react 脚手架(四)
经过三个章节的学习,你已经学会搭建了一个基于webpack4的react脚手架.如果要更改配置,比如,你希望把编译后的js文件和css文件等单独放dist下的static目录下,你想想,是不是有点麻烦 ...
- 基于 EntityFramework、Autofac 的 UnitOfWork 框架(一)
之前公司项目参考 NopCommerce 开发了一套系统,但是不支持 UnitOfWork,最近想开发新的项目,所以就基于原有的基础上又添加 UnitOfWork 支持,由于目前正在逐步完善中,所以可 ...
- Webpack 开发服务器代理设置解决跨域问题
在前端开发过程中,可能会遇到跨域问题,在 webpack 设置中对 devServer 配置代理即可解决跨域问题,具体设置如下: webpack.config.js module.exports = ...
- Python-第一篇-python初识及变量
<work smart>主动分享成果和经验,与同伴共同成长</smart work> 启文:使用20多种编程语言,对大家说节日快乐 万国码使用16位(至少)表示内容: ASCI ...
- js/jQuery使用过程中常见问题/已踩过的坑大杂烩
目录 一.jQuery选择器选择选中的或者disabled的选择框时attr函数无效 二.jQuery each函数的break/continue 三.jQuery 获取元素的left会值/left数 ...
- linux视频录制,推流处理
1.linux视频合成(视频后缀要一致) ffmpeg -i 1.mp4 -i 2.mp4 -i 3.mp4 -lavfi hstack=inputs=3 4.mp4 (input=3表示希望合并的视 ...
- hyperopt自动调参
hyperopt自动调参 在传统机器学习和深度学习领域经常需要调参,调参有些是通过通过对数据和算法的理解进行的,这当然是上上策,但还有相当一部分属于"黑盒" hyperopt可以帮 ...
- error C2371: 'IServiceProvider' : redefinition; different basic types
需要将#include <windows.h>放到using namespace System;前面. #include <windows.h>using namespace ...