js数组的sort排序的原理和应用
1、js sort()方法的应用:
首先:如果调用该方法时没有使用参数,将按字母顺序对数组中的元素进行排序,说得更精确点,是按照字符编码的顺序进行排序。要实现这一点,首先应把数组的元素都转换成字符串(如有必要),以便进行比较。
如果想按照其他标准进行排序,就需要提供比较函数,该函数要比较两个值,然后返回一个用于说明这两个值的相对顺序的数字。比较函数应该具有两个参数 a 和 b,其返回值如下:
- 若 a 小于 b,在排序后的数组中 a 应该出现在 b 之前,则返回一个小于 0 的值。
- 若 a 等于 b,则返回 0。
- 若 a 大于 b,则返回一个大于 0 的值。
(来自 W3C);
然而:然而重点来了!!!
例1:
<script>
var numArr = new Array(12,23,1,4,23,34,2,5);
numArr.sort(function compare(a,b){return a-b;});
for (var i = 0; i<numArr.length; i++) {
document.write(numArr[i] +"<br>");
}
</script>
这一段代码显示结果: 正序!1 ,2,4,5,12,23,23,34
例二:
<script>
var numArr = new Array(12,23,1,4,23,34,2,5);
numArr.sort(function compare(a,b){return b-a;});
for (var i = 0; i<numArr.length; i++) {
document.write(numArr[i] +"<br>");
}
</script>
这一段代码显示结果: 倒序!34,23,23,12,5,4,2,1
这说明正序倒序的结果和sort()方法函数中的参数位置有关。
2js sort()方法的原理:
冒泡排序法。
例:
var arrA = [6,2,4,3,5,1];
arrA.sort();
这个排序这进行两两比较.
比如你这个数组按升序排列var arrA = [6,2,4,3,5,1];
第一次比较6,2
6比2大得到2,6
原数组变成[2,6,4,3,5,1] 第2次比较第2个和第3个数,6和4.
6比4大,得到4,6
结果[2,4,6,3,5,1] 第3次比较第3个和第4个数6和3.
得到[2,4,3,6,5,1] 第4次[2,4,3,5,6,1]
第5次[2,4,3,5,1,6]
第一轮完毕 第二轮
第6次,2比4小,不变[2,4,3,5,1,6]
第7次[2,3,4,5,1,6]
第8次4比5小,不变[2,3,4,5,1,6]
第9次[2,3,4,1,5,6]
第三轮
第10次 2比3小,不变[2,3,4,1,5,6]
第11次 3比4小,不变[2,3,4,1,5,6]
第12次 [2,3,1,4,5,6]
第4轮
第13次 2比3小,不变[2,3,1,4,5,6]
第14次 [2,1,3,4,5,6] 第5轮
第15次[1,2,3,4,5,5]
同理可知后续过程。
3、随机排列的写法
arr.sort
(
function ()
{
return Math.random()<0.5?1:-1;
}
);
js数组的sort排序的原理和应用的更多相关文章
- js数组之sort排序的用法
sort排序 转载自:https://blog.csdn.net/idomyway/article/details/80544509 js中用方法sort()为数组排序.sort()方法有一个可选参数 ...
- js数组中sort排序注意的地方
var a=[1,2,3,4,5] function sum(a,b) { return a-b } //从小到大 function obj(a,b) { return b-a } //从大到小 a. ...
- js数组的sort排序详解
<body> <div> sort()对数组排序,不开辟新的内存,对原有数组元素进行调换 </div> <div id="showBox" ...
- JS数组的sort排序
数组sort方法排序var aa=[6,2,1,5]//默认是从小到大排序aa.sort()[1, 2, 5, 6] //下面也是从小到大排序aa.sort(function(a,b){return ...
- 数组Array.sort()排序的方法
数组sort排序 sort比较次数,sort用法,sort常用 描述 方法sort()将在原数组上对数组元素进行排序,即排序时不创建新的数组副本.如果调用方法sort()时没有使用参数,将按字母顺序( ...
- JavaScript中数组Array.sort()排序方法详解
JavaScript中数组的sort()方法主要用于对数组的元素进行排序.其中,sort()方法有一个可选参数.但是,此参数必须是函数. 数组在调用sort()方法时,如果没有传参将按字母顺序(字符编 ...
- 数组的sort()排序
1.sort() 方法用于对数组的元素进行排序,并返回数组.默认排序顺序是根据字符串Unicode码点,也就是你不传参进去的话,默认按字符串Unicode码点来排序,而不是按数字大小来排序 2.arr ...
- Chrome谷歌浏览器中js代码Array.sort排序的bug乱序解决办法
[现象] 代码如下: var list = [{ n: "a", v: 1 }, { n: "b", v: 1 }, { n: "c", v ...
- js数组之sort()函数
一般我们使用sort函数进行数组的排序,sort()方法有一个可选参数,是用来确定元素顺序的函数.如果这个参数被省略,那么数组中的元素将按照ASCII字符顺序进行排序.如: var arr = [&q ...
随机推荐
- UICollectionView 如何定制每个Cell的Size
最新用UICollectionView遇到挺多坑,差点让我废寝忘食了,虽然UICollectionView 逼格比UITableView高,但是真正想定制起来,特别是刚开始是用,真麻痹的到处都是坑,弄 ...
- ajax beforeSend中无效果
asnyc:false 与beforesend 同时使用 无效果
- 5A - Matrix
#include <iostream> using namespace std; int n, m, q; struct node { int v; // 节点权值 int r; // 右 ...
- 使用 v-model 实现 双向绑定.(子组件和父组件.)
vue 自定义组件 v-model双向绑定. 父子组件同步通信 父子组件通信,都是单项的,很多时候需要双向通信.方法如下: 1.父组件使用:msg.sync="aa" 子组件 ...
- React应用程序设计过程中如何区分模块到底是state还是props?
根据官方文档,满足以下任意条件的模块,就不是State,原文如下: 1.Is it passed in from a parent via props? If so, it probably isn’ ...
- 【前缀和】【two-pointer】【贪心】洛谷 P3143 [USACO16OPEN]钻石收藏家Diamond Collector 题解
解法众多的一道毒瘤题? 题目描述 奶牛Bessie很喜欢闪亮亮的东西(Baling~Baling~),所以她喜欢在她的空余时间开采钻石!她现在已经收集了\(N\)颗不同大小的钻石,现在她想在谷 ...
- POJ - 3764 01字典树+前缀异或和
异或关于前缀的特性:[u,v]=[1,u]^[1,v] 注意是路径,假设1为根,prexor[1]不保留数值 /*H E A D*/ int to[maxn<<1],nxt[maxn< ...
- HDU - 1427 / UESTC - 1252 经典dfs
很好奇为什么hzwer那种稍改一下还是无法过样例,代码我没看出问题 换了一种用桶组合挑取两个数不断回溯的做法 这是HDU1427的代码,后者改一改就行了 #include<bits/stdc++ ...
- 03-树2 List Leaves (25 分)
Given a tree, you are supposed to list all the leaves in the order of top down, and left to right. I ...
- drf序列化器的实例
应用目录结构: views.py from django.shortcuts import render # Create your views here. from django.views imp ...