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排序的原理和应用相关推荐

  1. js数组的sort排序(获取中位数)

    默认的sort排序,不指定参数,将会发现排序结果不是我们想要的真正排序,如下: A=[1,2,33,22,14,5,132] A.sort() //[1, 132, 14, 2, 22, 33, 5] ...

  2. js数组的sort排序详解

    http://www.cnblogs.com/longze/archive/2012/11/27/2791230.html <body> <div> sort()对数组排序,不 ...

  3. js 数组对象sort()排序(升序降序)

    升序 let testArr = [{ name: 'tom', age: '12' },{ name: 'marry', age: '17' },{ name: 'xxx', age: '14' } ...

  4. Js中的Sort排序方式

    Js中的Sort排序方式 这里只列出部分排序方式 1.Sort排序 Sort排序是数组内置函数,但他的排序是根据系统字符默认排序 //数组const arr = [3,4,2,3,123,35,65, ...

  5. Array数组对象sort排序方法

    数组sort排序方法 Array数组对象中的sort方法是根据数组中数组元素的字符编码进行排序的,所以对数字的排序,会跟想要的升序结果不一样 通过设置sort()方法的参数可以按照自定义的排序方式对数 ...

  6. 数组方法 sort() 排序错乱问题

    一.问题 在JavaScript中,数组使用sort()后发现有排序不正确的情况,如下: let arr = [1, 2, 3, 10, 20, 30] arr.sort() console.log( ...

  7. 数组的sort()排序

    目录 1.sort函数的基本用法 2.sort函数接受一个函数作为参数 3.数组中包含对象进行排序 1.sort函数的基本用法 数组的sort方法,默认按照字母顺序升序排序,更准确地说是按照ASCII ...

  8. Array.Sort()排序的原理

    Array.Sort()函数,利用这个函数可直接对数组中的数字进行排序,比冒泡排序简单得多了,仅仅只需要一行代码,下面是代码和运行结果. int[] nums = new int[] { 2, 652 ...

  9. [C#]Array.Sort()排序的原理

    [前言] C#视频的看到冒泡排序以后,小杨老师讲了一个更简单的排序方法,这个方法就是Array.Sort()函数,利用这个函数可直接对数组中的数字进行排序,比冒泡排序简单得多了,仅仅只需要一行代码,下 ...

最新文章

  1. ECCV 2018|商汤37篇论文入选,为你解读精选论文(附链接+开源资源)
  2. Marketing learning-2
  3. 【Excel】Excel根据单元格背景色求和
  4. [react-native]-ReactNative为iOS打包ipa文件
  5. 基于java的社交网站毕业设计_软件工程毕业设计_社交网站.pdf
  6. Kafka面试题与答案全套整理
  7. 6.4.1-6.4.2树、森林、二叉树的转换
  8. Linux检查点是做什么的,基于日志却采用三种方法来区别增量检查点和完全检查点...
  9. 自动化测试和手工测试结果汇总小实践
  10. php文档注释提取工具phpdocumentor的使用
  11. CountDownLatch类使用api
  12. NBU备份Vmware
  13. 全网音乐下载,抖音热歌、无损音乐下载
  14. macbook/macos输入法乱跳
  15. 7-45 航空公司VIP客户查询 【哈希表 链地址法】
  16. 艾司博讯:拼多多商品怎样多件一起付款?
  17. 计算机工程制图箭头怎么画,电脑画图软件内如何绘制向左的箭头
  18. LVGL开发|lv_lib_100ask之lvgl中文输入(lv_100ask_pinyin_ime )-LVGL中文输入
  19. 什么是Python语言?Python成为热门编程语言的原因
  20. MVC架构 使用FastReport

热门文章

  1. GIS投影的基本原理、超图数据集导入导出坐标系文件
  2. Google 的 Java 编码规范,参考学习!
  3. Java 学习笔记 反射与迭代器
  4. OpenCV3计算机视觉+Python(五)
  5. tomcat使用redis存储共享session
  6. jQuery中的DatePicker今天按钮不起作用
  7. HDU 2722 Here We Go(relians) Again (spfa)
  8. linux GD库安装
  9. 获取异常信息e.printStackTrace()的内容
  10. 黑客与画家 第十四章