- 冒泡排序:
var arr=[1,22,1,23,52,32,12];
function bubble(arr){
var i,j,d;
for(i = 0; i < arr.length; i ++){
for(j = 0; j < arr.length; j ++){
if(arr[i] < arr[j]){
d=arr[j];
arr[j]=arr[i];
arr[i]=d;
}
}
}
return arr;
}
document.write(bubble(arr));
执行结果:输出数组arr的升序排列:
[1,1,12,22,23,32,52]
- 利用sort进行排序:
sort方法使数组中的元素按照一定顺序进行排序
语法:ArrayObject.sort(方法函数)。
方法函数可选。规定排序的顺序。一定要是函数
如果不指定“方法函数”,则按照unicode码顺序方法排序;
如果指定“方法函数”,则按照“方法函数”排序。
-不指定“方法函数”,按照unicode码顺序进行排序:
var myarr1=["hello","world","Joe","Javascript"];
var myarr2=[1,3,11,53,21,55,34,76,323,22];
document.write(myarr1.sort()+"<br/>");
document.write(myarr2.sort());
执行结果:
Javascript,Joe,hello,world
1,11,21,22,3,323,34,53,55,76
-指定“方法函数”,按照“方法函数”进行排序:
function sortNum(a,b){
return a - b;
}
var arr=[22,1,2,42,33,44,21,87,9,30];
document.write("原数组arr:" +arr+"<br/>");
document.write("无指定方法的unicode顺序方法排序:"+arr.sort()+"<br/>");
document.write("指定方法函数sortNum()排序:"+arr.sort(sortNum)+"<br/>");
执行结果:
原数组arr:22,1,2,42,33,44,21,87,9,30
无指定方法的unicode顺序方法排序:1,2,21,22,30,33,42,44,87,9
指定方法函数sortNum()排序:1,2,9,21,22,30,33,42,44,87
⚠️注意:
- 数组调用sort()方法后,是在原数组上进行排序(影响其本身),不会生成新的副本。
- sort()方法默认是按照字符来进行排序的,若要改变其排序方法,可以自行指定排序规则函数。
- 二维数组排序【冒泡】【sort】
- 冒泡:
var arr=[['hello',10],['world',12],['phobe',25],['rose',33],['reachel',30]];
var i,j,num;
for(i=0;i<arr.length;i++){
for (j=0;j<arr.length-1;j++) {
if(arr[j][1]<arr[j+1][1]){
num=arr[j];
arr[j]=arr[j+1];
arr[j+1]=num;
}
}
}
console.log(arr);
二维数组冒泡排序结果为:
[[“rose”, 33], [“reachel”, 30], [“phobe”, 25], [“world”, 12], [“hello”, 10]]
- sort:
var arr=[['hello',22,3],['world',11],['phobe',8],['rose',33],['reachel',30]];
function num(a,b){
return a[1]-b[1];
}
var cha=arr.sort(num);
console.log(cha);
二维数组sort方法排序结果为:
[[“phobe”, 8], [“world”, 11], [“hello”, 22, 3], [“reachel”, 30], [“rose”, 33]]