张珂
2017-07-14 11:03
根据之前所学,我们在这段代码中定义了sortNum()这个方法,这个方法需要输入a,b两个值,为什么在排序中没有输入这两个值。 有人说这是排序法则,不需要输入,那么原理是什么,是第一个元素分别与后面的元素对比,进行排序,还是元素直接两两对比。 请问有大神可以解释一下吗?
在函数里面加了一段 document.write("(a-b)="+(a-b)+"</br>");终于看明白了
(a-b)=64----第一次调用函数:a是80,b是16,结果为64>0,因此交换位置:16,80,50,6,100,1
(a-b)=30----第二次调用函数:a是80,b是50,结果为30>0,因此交换位置:16,50,80,6,100,1
(a-b)=-34----第三次调用函数:a是16,b是50,结果为-34<0,因此不交换位置:16,50,80,6,100,1
(a-b)=74----第四次调用函数:a是80,b是6,结果为74>0,因此交换位置:16,50,6,80,100,1
(a-b)=44----第五次调用函数:a是50,b是6,结果为44>0,因此交换位置:16,6,50,80,100,1
(a-b)=10----第六次调用函数:a是16,b是6,结果为10>0,因此交换位置:6,16,50,80,100,1
(a-b)=-20----第七次调用函数:a是80,b是100,结果为-20<0,因此不交换位置:6,16,50,80,100,1
(a-b)=99----第八次调用函数:a是100,b是1,结果为99>0,因此交换位置:6,16,50,80,1,100
(a-b)=79----第九次调用函数:a是80,b是1,结果为79>0,因此交换位置:6,16,50,1,80,100
(a-b)=49----第十次调用函数:a是50,b是1,结果为49>0,因此交换位置:6,16,1,50,80,100
(a-b)=15----第十一次调用函数:a是16,b是1,结果为15>0,因此交换位置:6,1,16,50,80,100
(a-b)=5----第十二次调用函数:a是6,b是1,结果为5>0,因此交换位置:1,6,16,50,80,100
1,6,16,50,80,100
应该是一种优化版的冒泡排序法
每一次a和b比较时a b的位置 有规律又没有具体的顺序 看看吧
1 2 第一个和第二个数比
2 3 第二个和第三个数比
1 2
3 4
2 3
1 2
4 5
5 6
4 5
3 4
2 3
1 2
a b
大神,这个排序比较有顺序吗,谁和谁相减
应该是这样的,你在sortNum中有两个参数a和b,但你return a - b的时候就是从小到大,return b - a的时候就是从大到小
JavaScript进阶篇
468193 学习 · 21891 问题
相似问题