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

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

小白關于數組排序的疑問

http://img1.sycdn.imooc.com//5959e01f0001f4db03920349.jpg

這里紅線部分,我不明白在調用sort 進行排序時,具體是怎么工作的呢?本來sortNum()就是一個函數,現在指定sort 排序采用sortNum()進行。sortNum為兩個參數,而數組中有六個元素?。??然后怎么弄?希望知道的大神能指點迷津,感激不盡

正在回答

3 回答

function sortNum1(t,d) {

? ? return d-t

? ?}

僅僅只是根據函數兩個參數優先出現的順序進行判斷,括號里面先出現t,再出現d,如果你想按升序排就return t-d;

如果你想降序排那就return d-t;而且還只能對數字排序,對字符串還不能用這樣的方法。

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

慕斯8308057 提問者

非常感謝!明白了
2017-07-19 回復 有任何疑惑可以回復我~

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

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

利用sortNum()函數依次對數組中的兩元素比較來判斷是否交換位置。

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

慕斯8308057 提問者

如果是依次的話,他怎么知道什么時候應該停止調用呢?而且兩兩比較的時候本來第一次假如取出的數是80和16,那么明顯按升序排列的話就應該交換位置。下一次就應該取50和6,同理也要交換位置。但是此時只看這四個數,排列就為:16,80,6,50。。。所以即使兩兩取出來比較,不能保證數組里面所有的數按升序排列的阿??我這樣理解有不對嗎?
2017-07-03 回復 有任何疑惑可以回復我~

舉報

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

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

進入課程

小白關于數組排序的疑問

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

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

幫助反饋 APP下載

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

公眾號

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