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