關(guān)于a-b和b-a有關(guān)的排序問題
function sortNum(a,b) {
? ? ? ? return b-a;
? ?}
var myarr = new Array("80","16","50","6","100","1");
document.write(myarr.sort(sortNum));
這里函數(shù)sortNum()里面執(zhí)行的return b-a;意思返回b-a的值。我的理解是調(diào)用的時候不應(yīng)該返回的是差值嗎?比如數(shù)組var myarr = new Array("80","16","50","6","100","1");調(diào)用返回的應(yīng)該是前后兩數(shù)的差值啊,怎么就變成了排序而不是差值呢?一直理解不了,求大神們賜教
2017-07-21
在函數(shù)里面加了一段 ? document.write("(a-b)="+(a-b)+"</br>");終于看明白了
(a-b)=64----第一次調(diào)用函數(shù):a是80,b是16,結(jié)果為64>0,因此交換位置:16,80,50,6,100,1
(a-b)=30----第二次調(diào)用函數(shù):a是80,b是50,結(jié)果為30>0,因此交換位置:16,50,80,6,100,1
(a-b)=-34----第三次調(diào)用函數(shù):a是16,b是50,結(jié)果為-34<0,因此不交換位置:16,50,80,6,100,1
(a-b)=74----第四次調(diào)用函數(shù):a是80,b是6,結(jié)果為74>0,因此交換位置:16,50,6,80,100,1
(a-b)=44----第五次調(diào)用函數(shù):a是50,b是6,結(jié)果為44>0,因此交換位置:16,6,50,80,100,1
(a-b)=10----第六次調(diào)用函數(shù):a是16,b是6,結(jié)果為10>0,因此交換位置:6,16,50,80,100,1
(a-b)=-20----第七次調(diào)用函數(shù):a是80,b是100,結(jié)果為-20<0,因此不交換位置:6,16,50,80,100,1
(a-b)=99----第八次調(diào)用函數(shù):a是100,b是1,結(jié)果為99>0,因此交換位置:6,16,50,80,1,100
(a-b)=79----第九次調(diào)用函數(shù):a是80,b是1,結(jié)果為79>0,因此交換位置:6,16,50,1,80,100
(a-b)=49----第十次調(diào)用函數(shù):a是50,b是1,結(jié)果為49>0,因此交換位置:6,16,1,50,80,100
(a-b)=15----第十一次調(diào)用函數(shù):a是16,b是1,結(jié)果為15>0,因此交換位置:6,1,16,50,80,100
(a-b)=5----第十二次調(diào)用函數(shù):a是6,b是1,結(jié)果為5>0,因此交換位置:1,6,16,50,80,100
1,6,16,50,80,100
應(yīng)該是一種優(yōu)化版的冒泡排序法
2017-06-19
.如果指定<方法函數(shù)>,則按<方法函數(shù)>所指定的排序方法排序。myArray.sort(sortMethod);
注意:?該函數(shù)要比較兩個值,然后返回一個用于說明這兩個值的相對順序的數(shù)字。比較函數(shù)應(yīng)該具有兩個參數(shù) a 和 b,其返回值如下:?
? 若返回值<=-1,則表示 A 在排序后的序列中出現(xiàn)在 B 之前。
? 若返回值>-1 && <1,則表示 A 和 B 具有相同的排序順序。
? 若返回值>=1,則表示 A 在排序后的序列中出現(xiàn)在 B 之后。
2017-05-29
你可以舉個例子,比如10和11,return ?10-11.結(jié)果是-1,說明是升序
2017-05-19
你定義的函數(shù)需要傳兩個參數(shù),myarr.sort(sortNum)這個著實是看不懂,如果你想求數(shù)組倆數(shù)的差值就傳進去兩個參數(shù),例如sortNum(myarr[0],myarr[1]),myarr.sort,是系統(tǒng)自帶的排序