js实现数组排序的方法有很多,下面我就来说说几种常见的和最简单的方法(第三种最简单):
第一种.冒泡排序 从小到大
数组中的元素两两比较,如果第一个元素比第二个元素大,交换位置,然后让第二个和第三个比较,以此类推,第一轮结束后,最大的元素排在了最后
然后进行第二轮,两两比较;
看代码
var arr1 = [22, 13, 57, 4, 66, 12];
function bubbleSort(arr) {
for(var i = 0; i < arr.length - 1; i++) { //外层循环控制轮数
for(var j = 0; j < arr.length - 1 - i; j++) { //内层循环控制次数
if(arr[j] > arr[j + 1]) {
var temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
}
}
}
return arr;
}
console.log(bubbleSort(arr1));
第二种:选择排序
假设第一个元素为最小值,设一个变量minIndex保存这个值对应的索引,然后让最小索引对应值和其他剩余的所有元素进行比较,如果有比minIndex对应的值小的,改变minIndex的值,再让minIndex对应的值和剩余的值比较,直至结束,第一轮完成能取到一个最小值,和第一个值交换位置
进行第二轮,假设第二个元素为最小值,以此类推
上代码:
var arr1 = [22, 13, 57, 4, 66, 12];
function selectSort(arr){
for(var i = 0; i < arr.length - 1; i++){
var minIndex = i;
for(var j = i+1; j < arr.length; j++){ //确定一个最小值对应的索引
if(arr[minIndex] > arr[j]){
minIndex = j;
}
}
//交换位置
var temp = arr[i];
arr[i] = arr[minIndex];
arr[minIndex] = temp;
}
return arr;
}
console.log(selectSort(arr1));
第三种:ES5的数组方法 sort()
var arr = [5,11,8,22,3,9];
//var a = arr.sort();
arr.sort(function(a,b){
//return a-b;从小到大//[3,5,8,9,11,22]
return b - a;
});
console.log(arr);
以上就是我所要分享的数组排序的方法,可能还有别的一些方法,等到时再来分享哦!