JavaScript算法(实例三)数组排序--冒泡排序 / sort() / reverse() / 比较函数

2022-07-30,,,,

冒泡排序

冒泡排序是让数组中的两个相邻数字进行比较,数组中较大的值向下沉,值小的上浮,就类似于水中的气泡,较大的下沉,较小的上升,慢慢冒出来。简单的说就是数值大的会慢慢往前排,数据值小的会慢慢向后排,最终实现由小到达排列,最小的排在最前,最大的排到最后。

var arr = [ 91, 76, 96, 23, 93 ];
console.log(arr);
for(var i=0;i<arr.length;i++){
    for(var j=0;j<arr.length-i-1;j++){
        if(arr[j]>arr[j+1]){
            var temp = arr[j];
            arr[j] = arr[j+1];
            arr[j+1] = temp;
        }
    }
}
console.log(arr);

/*
[ 91, 76, 96, 23, 93 ]
[ 23, 76, 91, 93, 96 ]
 */

sort()

sort() 方法用于对数组的元素进行排序,并返回数组。

var arr = [ 91, 76, 96, 23, 93 ];
console.log(arr);
console.log(arr.sort());
/*
[ 91, 76, 96, 23, 93 ]
[ 23, 76, 91, 93, 96 ]
 */

注意:sort() 方法的默认排序顺序是根据字符串UniCode码。因为排序是按照字符串UniCode码的顺序进行排序的,所以首先应该把数组元素都转化成字符串(如有必要),以便进行比较。

reverse()

reverse() 方法用来反转数组中的元素,可以使用它以降序对数组进行排序。

var arr = [ 91, 76, 96, 23, 93 ];
console.log(arr);
arr.sort();
arr.reverse();
console.log(arr);
/*
[ 91, 76, 96, 23, 93 ]
[ 96, 93, 91, 76, 23 ]
 */

比较函数

比较函数用来比较两个值的大小,然后返回一个用于说明这两个值的相对顺序的数字。

function(a, b){
	return a-b;
}

比较函数应该具有两个参数 a 和 b,其返回值如下:

  • 若 a 小于 b,即 a - b 小于零,则返回一个小于零的值,数组将按照升序排列。
  • 若 a 等于 b,即 a - b 等于零,则返回 0,数组不再排序。
  • 若 a 大于 b,即 a - b 大于零,则返回一个大于零的值,数组将按照降序排列。
var arr = [ 91, 76, 96, 23, 93 ];
arr.sort(function(a, b){
    return a - b;  //升序
});
console.log(arr);
//[ 23, 76, 91, 93, 96 ]
arr.sort(function(a, b){
    return b - a;  //降序
});
console.log(arr);
//[ 96, 93, 91, 76, 23 ]

JavaScript 数组经常会包含对象,即使对象拥有不同数据类型的属性,sort() 方法仍可用于对数组进行排序,解决方法是通过比较函数来对比属性值。

var cars = [
	{type:"Volvo", year:2016},
	{type:"Saab", year:2001},
	{type:"BMW", year:2010}
];
cars.sort(function(a, b){
    return a.year - b.year;
});
console.log(cars);
/*
[
  { type: 'Saab', year: 2001 },
  { type: 'BMW', year: 2010 },
  { type: 'Volvo', year: 2016 }
]
 */

本文地址:https://blog.csdn.net/jingjing217/article/details/107892134

《JavaScript算法(实例三)数组排序--冒泡排序 / sort() / reverse() / 比较函数.doc》

下载本文的Word格式文档,以方便收藏与打印。