常数的排序
let x = 10;
let y = 20;
let z;
if (x < y) {
z = x;
x = y;
y = z;
}
console.log(x, y);//x = 20 ,y = 10
通过一个媒介来继承x的初始值,然后将y的值赋值给x,再把媒介z的值赋值给y,达到排序
一个可重复使用的排序程序
第一种
function sort1(numb1,numb2){
let z;
if(numb1 < numb2){
z = numb1;
numb1 = numb2;
numb2 = z;
}
return `${numb1} ${numb2}`;
}
console.log(sort1(10,20));
第二种
function sort1(numb1,numb2){
let z;
if(numb1 < numb2){
z = numb1;
numb1 = numb2;
numb2 = z;
}
console.log(numb1,numb2);
}
sort1(10,20);
同作用不同写法,这种会很常见,在第一个的基础上添上函数
引用(数组)类型的排序
固定值的交换
const arr = [1, 3, 5, 7, 2, 4];
let z;
if(arr[3] > arr[4])
{
z = arr[3];
arr[3] = arr[4];
arr[4] = z;
}
console.log(arr);// 1,3,5,2,7,4
数组函数
let arr = [1, 3, 5, 7, 2, 4];
let z;
function sortT1([...arr]) {
for (let j = 0; j < arr.length; j++) {
for (let i = 0; i <= arr.length; i++) {
if (arr[i] > arr[i + 1]) {
z = arr[i];
arr[i] = arr[i + 1];
arr[i + 1] = z;
}
}
}
return(arr);
}
console.log(sortT1(arr));//(6) [1, 2, 3, 4, 5, 7]
函数不唯一,你可以用多个方法的配合来达到同上面效果一样的方法
在最新的方法中可以优化成这样,使用sort方法
let arr = [1, 3, 5, 7, 2, 4];
console.log(arr.sort(function(a,b){
return a-b;
}));
数组排序方法—语法:sort(函数(元素1,元素2)返回 a-b;)
运行逻辑,当数组进入sort方法的时候,把arr的数组展开,然后进入函数,当a - b 大于0时不变,
当a - b 小于0时,把值返回到sort方法,进行排序
为什么a-b会运行交换排序?
sort原理可以参考上面的内容,从数字到数组函数的这一过程
上面的内容可以分为:简单-容易-复杂的三步走:
第一步:最简单的交换数值
第二步:随机交换函数
第三步:到数组的随机交换函数
核心:明确的要达到的目的——数组的排序函数
从四个要素来看上面的编程的逻辑想要的信息:需要数字,需要数组,需要变量
计算:计算他们的过程
控制流程:循环,判断
结果:程序的目的是否和目的一样
小结:
sort方法可以用来排列引用类型,引用类型只有一种吗?不有多种
当你不记得sort方法的时候,可以自己从简单的编程到复杂的编程,现成编一个sort方法
方法多种多样,选择合适的最重要,可用sort方法,也可以sorT1(上面使用的函数名字,自己编一个)