【0】Javascript数组排序-一维数组排序-二维数组排序【冒泡】【sort】

- 冒泡排序:

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]]

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值