JS——对三个数进行排序(降序)

要求:最终结果(num1是最大,num2是中间值,num3最小)

第一种方法:(对每种情况进行判断)

function numsort(num1,num2,num3) {
			var max = 0, mid = 0, min = 0;
			//num1 >= num2 >= num3
			if(num1 >= num2 && num1 >= num3 && num2 >= num3){
				console.log(num1);
				console.log(num2);
				console.log(num3);
			}
			//num1 >= num3 >= num2
			if(num1 >= num3 && num1 >= num2 && num3 >= num2){
				mid = num3;
				min = num2;
				num2 = mid;
				num3 = min;
				console.log(num1);
				console.log(num2);
				console.log(num3);
			}
			//num2 >= num1 >= num3
			if(num2 >= num1 && num2 >= num3 && num1 >= num3){
				max = num2;
				mid = num1;
				num1 = max;
				num2 = mid;
				console.log(num1);
				console.log(num2);
				console.log(num3);
			}
			//num2 >= num3 >= num1
			if(num2 >= num3 && num2 >= num1 && num3 >= num1){
				max = num2;
				mid = num3;
				min = num1;
				num1 = max;
				num2 = mid;
				num3 = min;
				console.log(num1);
				console.log(num2);
				console.log(num3);
			}
			//num3 >= num1 >= num2
			if(num3 >= num1 && num3 >= num2 && num1 >= num2){
				max = num3;
				mid = num1;
				min = num2;
				num1 = max;
				num2 = mid;
				num3 = min;
				console.log(num1);
				console.log(num2);
				console.log(num3);
			}
			//num3 >= num2 >= num1
			if(num3 >= num2 && num3 >= num1 && num2 >= num1){
				max = num3;
				min = num1;
				num1 = max;
				num3 = min;
				console.log(num1);
				console.log(num2);
				console.log(num3);
			}
		}

---------------------------------------------------------------

第二种:

//1、if a < b 交换  result: a > b
		//2、if b < c 交换  result: b > c   //这里把最小的值放到最后
		//3、if a < b 交换  result:a > b   //然后比较前两个数
		function numsort(num1,num2,num3) {
			num1 < num2 && (
				num1 = num1 ^ num2,   //注意结尾是逗号
				num2 = num2 ^ num1,
				num1 = num1 ^ num2
			);
			num2 < num3 && (
				num2 = num2 ^ num3,
				num3 = num3 ^ num2,
				num2 = num2 ^ num3
			);
			num1 < num2 && (
				num1 = num1 ^ num2,
				num2 = num2 ^ num1,
				num1 = num1 ^ num2
			);
			console.log(num1);
			console.log(num2);
			console.log(num3);
		}

这个用到了位运算,比较难懂,我也没去深挖,只清楚这样也是可以的。

可以用 ^= 


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值