数组排序的几种方法

时间:2022-09-25 19:24:11

1、sort()

sort()主要是对数组中的字符串进行排序,通过比较ASCII的大小,对于数字的比较使用格式

数组名.sort(function(num1,num2){
return num1-num2;
})
这是升序,如果降序将num1 -num2改成num2 -num1;


2、选择排序法

原理就是用前一个数和后面每一个的比较,如果大于就交换位置(假设是从小到大排序),依次比较,

// 选择排序法 用前一个数和后一个比较,如果是升序,大的值放后面,如果是降序,小的放后面
/*var arr= [21,34,2,45,4,60,3];
for (var i=0; i<arr.length; i++){
for (var j=i+1; j<arr.length; j++){
if(arr[i]>arr[j]){
var temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}

}
}
console.log(arr);*/


3、冒泡排序

原理就是相邻的元素之间进行比较

依次比较相邻的两个数,将小数放在前面,大数放在后面。即首先比较第1个和第2个数,将小数放前,大数放后。然后比较第2个数和第3个数,将小数放前,大数放后,如此继续,直至比较最后两个数,将小数放前,大数放后。重复以上过程,仍从第一对数开始比较(因为可能由于第2个数和第3个数的交换,使得第1个数不再小于第2个数),将小数放前,大数放后,一直比较到最大数前的一对相邻数,将小数放前,大数放后,第二趟结束,在倒数第二个数中得到一个新的最大数。如此下去,直至最终完成排序。
// 冒泡排序方法,挨个去比较
var arr = [12,4,34,5,23,33];
function maoPao(arr){
//比较的轮数
for (var i=1; i<arr.length; i++){
// 每一轮比较的次数
for (var j=1, k=0; j<=arr.length-i; j++, k++){
// 进行比较
if(arr[k]>arr[k+1]){
var temp = arr[k];
arr[k] = arr[k+1];
arr[k+1] = temp;
}
}
}
}
maoPao(arr);
console.log(arr);