亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

關于a-b和b-a有關的排序問題

function sortNum(a,b) {

? ? ? ? return b-a;

? ?}

var myarr = new Array("80","16","50","6","100","1");

document.write(myarr.sort(sortNum));

這里函數sortNum()里面執行的return b-a;意思返回b-a的值。我的理解是調用的時候不應該返回的是差值嗎?比如數組var myarr = new Array("80","16","50","6","100","1");調用返回的應該是前后兩數的差值啊,怎么就變成了排序而不是差值呢?一直理解不了,求大神們賜教

正在回答

4 回答

在函數里面加了一段 ? 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
應該是一種優化版的冒泡排序法

3 回復 有任何疑惑可以回復我~
#1

慕慕1807936

thanks
2017-08-16 回復 有任何疑惑可以回復我~
#2

慕后端6566198

為什么a,b的值的順序看起來很亂,并不是相鄰之間平移,沒看懂,能解釋一下嗎?謝謝
2017-12-21 回復 有任何疑惑可以回復我~
#3

ESKY3687376 回復 慕后端6566198

對不是相鄰的,是一種優化過的冒泡排序。這已經是算法問題了。
2017-12-23 回復 有任何疑惑可以回復我~
#4

ESKY3687376 回復 慕后端6566198

給你個網址http://blog.csdn.net/cbs612537/article/details/8513723 其實這已經是涉及到算法了
2017-12-23 回復 有任何疑惑可以回復我~
查看1條回復

.如果指定<方法函數>,則按<方法函數>所指定的排序方法排序。myArray.sort(sortMethod);

注意:?該函數要比較兩個值,然后返回一個用于說明這兩個值的相對順序的數字。比較函數應該具有兩個參數 a 和 b,其返回值如下:?

? 若返回值<=-1,則表示 A 在排序后的序列中出現在 B 之前。
? 若返回值>-1 && <1,則表示 A 和 B 具有相同的排序順序。
? 若返回值>=1,則表示 A 在排序后的序列中出現在 B 之后。


0 回復 有任何疑惑可以回復我~

你可以舉個例子,比如10和11,return ?10-11.結果是-1,說明是升序

0 回復 有任何疑惑可以回復我~

你定義的函數需要傳兩個參數,myarr.sort(sortNum)這個著實是看不懂,如果你想求數組倆數的差值就傳進去兩個參數,例如sortNum(myarr[0],myarr[1]),myarr.sort,是系統自帶的排序

0 回復 有任何疑惑可以回復我~

舉報

0/150
提交
取消
JavaScript進階篇
  • 參與學習       468832    人
  • 解答問題       22582    個

本課程從如何插入JS代碼開始,帶您進入網頁動態交互世界

進入課程

關于a-b和b-a有關的排序問題

我要回答 關注問題
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號