• 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;
    		}
    	);
    

      

  • 相关阅读:
    HTTP GET POST PUT DELETE 四种请求
    PHP表达式
    PHP基础
    文件存储
    动态加载布局文件
    Android新增控件
    Spring简介
    Hibenate配置篇
    无题
    struts常用标签与校验器
  • 原文地址:https://www.cnblogs.com/kaixin3946/p/5638717.html
Copyright © 2020-2023  润新知