欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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

程序员文章站 2022-03-03 16:09:12
...

要求:最终结果(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);
		}

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

可以用 ^= 


相关标签: javascript 排序