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);
}
这个用到了位运算,比较难懂,我也没去深挖,只清楚这样也是可以的。
可以用 ^=
上一篇: 6.5(对三个数进行排序)
下一篇: 1.1 将序列分解为单独的变量