张珂
2017-07-14 11:00
根据之前所学,我们在这段代码中定义了sortNum()这个方法,这个方法需要输入a,b两个值,为什么在排序中没有输入这两个值。 有人说这是排序法则,不需要输入,那么原理是什么,是第一个元素分别与后面的元素对比,进行排序,还是元素直接两两对比。 请问有大神可以解释一下吗?
sortNum()是一个函数,是自己定义的一个排序规则,这个函数名随便自己定义。然后这个函数的作用,比如,你要给一组数排序,可以是升序,也可以是降序,你需要给出说明:例如下面这个函数
function sumSort(a,b){ return a-b;}(a代表数组中前面的数,b代表数组后面的数)
如果(a-b)>=1,则a应该排到后面,
如果(a-b)<-1,则a应该放在前面,
如果(a-b)在-1~1之间,两个同序(这里的意思应该是只对整数排序)。
这其实就是一个冒泡排序的过程,每次比较时把前一位数与后一位数相比较,根据上面三种结果来确定两个数的正确位置。(可以自己完整的走一遍这个流程)这是一个升序排序。
function sumSort(a,b){ return b-a;} 这个函数就是一个降序过程,每次比较时把后面的数减去前面的数,然后把结果与上面三种情况比较,排除正确序列。
这是sort的函数规则,sortnum这里只提供了顺序和返回值;
sortNum是一个指针,指向了这个函数,然后调用,有点复杂,记住就行
(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
不是方法,就是随便取得名字,意思是较小的数,如果是正序排序就取较小的数,是两数相减,如果是整数,则后面的数小,如果是负数,则前面的小。
JavaScript进阶篇
468194 学习 · 21891 问题
相似问题