码迷,mamicode.com
首页 > 编程语言 > 详细

js数组内数字按大小排序实现函数

时间:2018-12-29 23:37:18      阅读:447      评论:0      收藏:0      [点我收藏+]

标签:highlight   class   java   没有   get   pre   .so   number   ++   

正常冒泡排序:

function evlabc(a) { //排序大小
    var i = j = t = 0;
    for (i = 0; i < a.length; i++) {
        for (j = 0; j < a.length; j++) {
            if (a[i] < a[j]) {// 相邻元素两两对比
                t = a[i];
                a[i] = a[j];
                a[j] = t;
            }
            console.log(‘i:‘ + i + ‘ j:‘ + j + ‘  当前数组为:‘ + a);
        }
    }
    return a;
}
var arr = [5, 100, 6, 3, -12];
evlabc(arr);

冒泡排序优化版:

function sort(arr){
    for(var i=0;i<arr.length-1;i++){
        for(var j=0;j<arr.length-i-1;j++){
            if(arr[j]>arr[j+1]){// 相邻元素两两对比
                var hand = arr[j];
                arr[j]=arr[j+1];
                arr[j+1]=hand;
                
            }
           console.log(‘i:‘ + i + ‘ j:‘ + j + ‘  当前数组为:‘ + arr);
        }
    }
    return arr;
}
var ar = [5,100,6,3,-12];
sort(ar);

  由此可以看出,将相邻的两个数依次相比较,大数向后放,小数向前移。即是位置交换实现小数在前,大数在后。经过10次比较后,最终实现重排。

如果从大到小排序的话,则将if(arr[j]>arr[j+1])改为if(arr[j]<arr[j+1])即可

极简sort版:

function sortNumber(a,b){//升序
    return a - b
}
var arr = [5, 100, 6, 3, -12];
arr.sort(sortNumber);

关于sort()函数 http://www.w3school.com.cn/jsref/jsref_sort.asp

sort函数没有使用参数时,将按字母顺序对数组中的元素进行排序。如果想按照其他标准进行排序,就需要提供比较函数,该函数要比较两个值,然后返回一个用于说明这两个值的相对顺序的数字。比较函数应该具有两个参数 a 和 b,其返回值如下:

  • 若 a 小于 b,在排序后的数组中 a 应该出现在 b 之前,则返回一个小于 0 的值。
  • 若 a 等于 b,则返回 0。
  • 若 a 大于 b,则返回一个大于 0 的值。

 

js数组内数字按大小排序实现函数

标签:highlight   class   java   没有   get   pre   .so   number   ++   

原文地址:https://www.cnblogs.com/7qin/p/10197943.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!