JavaScript数组元素的排序及洗牌算法

这里利用了一个 sort 函数进行排序

正向排序

var numberArray = [2,1,3];
numberArray.sort(function(a, b){
        return a-b;
    }
);
//[1,2,3]

逆向排序

var numberArray = [2,1,3];
numberArray.sort(function(a, b){
        return b-a;
    }
);
//[3,2,1]

随机排序(洗牌)

var numberArray = [2,1,3];
numberArray.sort(function(){
        return Math.random()-0.5;
    }
);
//random
可以看到,排序的是由匿名函数的返回值决定。 false 是正序, true 是逆序,0为不排序,随机则是随机结果。

时间: 2024-10-03 23:27:17

JavaScript数组元素的排序及洗牌算法的相关文章

JS随机洗牌算法之数组随机排序_javascript技巧

推荐阅读:JavaScript学习笔记之数组的增.删.改.查 JavaScript学习笔记之数组求和方法 JavaScript学习笔记之数组随机排序 洗牌算法是一个比较形象的术语,本质上让一个数组内的元素随机排列.举例来说,我们有一个如下图所示的数组,数组长度为 9,数组内元素的值顺次分别是 1~9: 从上面这个数组入手,我们要做的就是打乱数组内元素的顺序: 代码实现 维基百科上的 Fisher–Yates shuffle 词条对洗牌算法做了详细介绍,下面演示的算法也是基于其中的理论编写的: A

javascript随机之洗牌算法深入分析_javascript技巧

洗牌算法是我们常见的随机问题,在玩游戏.随机排序时经常会碰到.它可以抽象成这样:得到一个M以内的所有自然数的随机顺序数组. 在百度搜"洗牌算法",第一个结果是<百度文库-洗牌算法>,扫了一下里面的内容,很多内容都容易误导别人走上歧途,包括最后用链表代替数组,也只是一个有限的优化(链表也引入了读取效率的损失). 该文里的第一种方法,可以简单描述成:随机抽牌,放在另一组:再次抽取,抽到空牌则重复抽."抽到空牌则重复抽"这会导致后面抽到空牌的机会越来越大,显然

JavaScript随机打乱数组顺序之随机洗牌算法_javascript技巧

假如有一个数组是这样子: var arr1 = ["a", "b", "c", "d"]; 如何随机打乱数组顺序,也即洗牌. 有一个比较广为传播的简单随机算法: function RandomSort (a,b){ return (0.5 - Math.random()); } 实际证明上面这个并不完全随机. 随便一搜网上太多这种东西了,看一下stackoverflow上的一个高分回答,答案出自github上. knuth-s

JavaScript中用sort()方法对数组元素进行排序的操作

  这篇文章主要介绍了JavaScript中用sort()方法对数组元素进行排序的操作,是JS入门学习中的基础知识,需要的朋友可以参考下 JavaScript数组sort()方法排序数组的元素. 语法 ? 1 array.sort( compareFunction ); 下面是参数的详细信息: compareFunction : 指定一个函数,定义排序次序.如果省略,数组字典顺序排序. 返回值: 返回一个排序的数组 例子: ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 <

JavaScript中用sort()方法对数组元素进行排序的操作_基础知识

 JavaScript数组sort()方法排序数组的元素.语法 array.sort( compareFunction ); 下面是参数的详细信息:     compareFunction : 指定一个函数,定义排序次序.如果省略,数组字典顺序排序. 返回值: 返回一个排序的数组例子: <html> <head> <title>JavaScript Array sort Method</title> </head> <body> &l

javascript数组操作(去重,排序,连接)

1.数组的创建  代码如下 复制代码  var arrayObj = new Array(); //创建一个数组 var arrayObj = new Array([size]); //创建一个数组并指定长度,注意不是上限,是长度 var arrayObj = new Array([element0[, element1[, ...[, elementN]]]]); //创建一个数组并赋值        要说明的是,虽然第二种方法创建数组指定了长度,但实际上所有情况下数组都是变长的,也就是说即使

php 数组元素随机排序代码

php教程 数组元素随机排序代码 因为工作需要我要对我定义好的数组进行随机排序,每一次循环都要是不同的,下面我们利用了php shuffle函数随机对数组元素进行排序.方法非常简单. shuffle() 函数把数组中的元素按随机顺序重新排列. 若成功,则返回 true,否则返回 false. 注释:本函数为数组中的单元赋予新的键名.这将删除原有的键名而不仅是重新排序. */ $array = array(1,2,3,4); for( $i=1;$i<30;$i++) {  shuffle( $a

[经典面试题]完美洗牌算法

题目 有个长度为2n的数组{a1,a2,a3,-,an,b1,b2,b3,-,bn},希望排序后{a1,b1,a2,b2,-.,an,bn},请考虑有无时间复杂度o(n),空间复杂度0(1)的解法. 来源 2013年UC的校招笔试题 思路一 第①步.确定b1的位置,即让b1跟它前面的a2,a3,a4交换: a1,b1,a2,a3,a4,b2,b3,b4 第②步.接着确定b2的位置,即让b2跟它前面的a3,a4交换: a1,b1,a2,b2,a3,a4,b3,b4 第③步.b3跟它前面的a4交换位

一个简单有效的洗牌算法

装配脑袋兄在某个帖子中指出了一种有意思的洗牌算法,博主按照他的思路写了另外一种洗牌算法.下面是该洗牌算法的思路: 我们先看一下纸牌游戏.一幅纸牌由 52 张不同的纸牌组成,发牌时必须产生不重复的纸牌,而且洗牌过程必须公平,即 52! 中纸牌顺序应该等概率出现.很明显这种随机排列所产生的随机数必须均匀分布且独立.由此代码如下: using System; using System.Diagnostics; namespace Lucifer.CSharp.Sample { class Progra