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,26比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;});
转载于:https://www.cnblogs.com/kaixin3946/p/5638717.html
js数组的sort排序的原理和应用相关推荐
- js数组的sort排序(获取中位数)
默认的sort排序,不指定参数,将会发现排序结果不是我们想要的真正排序,如下: A=[1,2,33,22,14,5,132] A.sort() //[1, 132, 14, 2, 22, 33, 5] ...
- js数组的sort排序详解
http://www.cnblogs.com/longze/archive/2012/11/27/2791230.html <body> <div> sort()对数组排序,不 ...
- js 数组对象sort()排序(升序降序)
升序 let testArr = [{ name: 'tom', age: '12' },{ name: 'marry', age: '17' },{ name: 'xxx', age: '14' } ...
- Js中的Sort排序方式
Js中的Sort排序方式 这里只列出部分排序方式 1.Sort排序 Sort排序是数组内置函数,但他的排序是根据系统字符默认排序 //数组const arr = [3,4,2,3,123,35,65, ...
- Array数组对象sort排序方法
数组sort排序方法 Array数组对象中的sort方法是根据数组中数组元素的字符编码进行排序的,所以对数字的排序,会跟想要的升序结果不一样 通过设置sort()方法的参数可以按照自定义的排序方式对数 ...
- 数组方法 sort() 排序错乱问题
一.问题 在JavaScript中,数组使用sort()后发现有排序不正确的情况,如下: let arr = [1, 2, 3, 10, 20, 30] arr.sort() console.log( ...
- 数组的sort()排序
目录 1.sort函数的基本用法 2.sort函数接受一个函数作为参数 3.数组中包含对象进行排序 1.sort函数的基本用法 数组的sort方法,默认按照字母顺序升序排序,更准确地说是按照ASCII ...
- Array.Sort()排序的原理
Array.Sort()函数,利用这个函数可直接对数组中的数字进行排序,比冒泡排序简单得多了,仅仅只需要一行代码,下面是代码和运行结果. int[] nums = new int[] { 2, 652 ...
- [C#]Array.Sort()排序的原理
[前言] C#视频的看到冒泡排序以后,小杨老师讲了一个更简单的排序方法,这个方法就是Array.Sort()函数,利用这个函数可直接对数组中的数字进行排序,比冒泡排序简单得多了,仅仅只需要一行代码,下 ...
最新文章
- ECCV 2018|商汤37篇论文入选,为你解读精选论文(附链接+开源资源)
- Marketing learning-2
- 【Excel】Excel根据单元格背景色求和
- [react-native]-ReactNative为iOS打包ipa文件
- 基于java的社交网站毕业设计_软件工程毕业设计_社交网站.pdf
- Kafka面试题与答案全套整理
- 6.4.1-6.4.2树、森林、二叉树的转换
- Linux检查点是做什么的,基于日志却采用三种方法来区别增量检查点和完全检查点...
- 自动化测试和手工测试结果汇总小实践
- php文档注释提取工具phpdocumentor的使用
- CountDownLatch类使用api
- NBU备份Vmware
- 全网音乐下载,抖音热歌、无损音乐下载
- macbook/macos输入法乱跳
- 7-45 航空公司VIP客户查询 【哈希表 链地址法】
- 艾司博讯:拼多多商品怎样多件一起付款?
- 计算机工程制图箭头怎么画,电脑画图软件内如何绘制向左的箭头
- LVGL开发|lv_lib_100ask之lvgl中文输入(lv_100ask_pinyin_ime )-LVGL中文输入
- 什么是Python语言?Python成为热门编程语言的原因
- MVC架构 使用FastReport