js中常见的数组排序
算法-冒泡排序和选择排序
(1)reverse()翻转数组中元素的顺序
var arr = [11,22,33,44];
var a = arr.reverse();
console.log(arr);
//输出结果[44,33,22,11]
(2) sort() 排序 按照字符串排序。
var arr = [11,5,21,9];
var a = arr.sort();
arr.sort(function(a,b){
//return a-b;输出得结果[5,9,11,21];
return b-a;//输出得结果[21,11,9,5];
})
console.log(arr);
排序算法:
(1)冒泡排序:数组中的元素两两进行比较,如果第一个比第二个大,交换值,再让第二个和第三个比较,以此类推,第一轮结束后,最大值排到了最后再进行第二轮比较,第二个大值排到倒数第二个位置上,直至比较完所有元素
代码如下:
var arr = [32,22,29,11,57];
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(arr));//输出结果[11,22,29,32,57]
(2)选择排序
假定第一个值为最小值,设一个变量minIndex指向这个最小的索引,让这个值和剩余的其他值进行比较,如果有比这个值小的,改变minIndex的值,再让minIndex 指向的值和剩余的值进行比较,如果有比这个值小的,改变minIndex的值,再让minIndex指向的值和剩余的值进行比较,还有小的,继续改变minIndex的值,第一轮结束后,minIndex指向就是最小值,让这个最小值和第一个值交换位置
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(arr));输出结果为:[11,22,29,32,57]