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

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

數組排序,sort()函數

<script type="text/javascript">
?function sortNum(a,b) {
?return a - b;
//升序,如降序,把“a - b”該成“b - a”
}
var myarr = new Array("80","16","50","6","100","1");
?document.write(myarr + "<br>");
?document.write(myarr.sort(sortNum));
</script>

這里為什么sortNum()函數里return a-b就定義了升序?

正在回答

2 回答

首先,題主要明確什么是冒泡排序。說白了就是兩兩比較

冒泡排序:它重復地走訪過要排序的數列,一次比較兩個元素,如果他們的順序錯誤就把他們交換過來。走訪數列的工作是重復地進行直到沒有再需要交換,也就是說該數列已經排序完成。

這個算法的名字由來是因為越大的元素會經由交換慢慢“浮”到數列的頂端,故名。

//百度百科:http://baike.baidu.com/link?url=x3j1m3MP7w4PCz0OhJF7cJCbGmVSfGeE5cdxeQtMmXjhIXubh45qb8J_ZX3EVtc2zkb1wEm0cXijFePkzlyOc_

接下來,讓我們來看sort()方法

myArray.sort(sortMethod);

隨便定義一個sortMethod函數:

?function sortNum(a,b) {
?return a - b;
//升序,如降序,把“a - b”該成“b - a”
}

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

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

這是什么意思呢就是說,計算機本身并不根據大小排序,它根據你寫的sort()里面的函數,就是sortMethod,它的返回值來決定哪個數在先,哪個數在后。

?function sortNum(a,b)注意,這個a,b順序是不變的,計算機根據函數返回值判斷二者先后關系!??!

舉個例子,a=100 b=20 ? ? a-b>=1說明a肯定比b大吧,然后就返回了1,sort方法一看,你這個返回值大于1啊,a就應該在b后面,然后繼續比較下一組數,就是用冒泡排序的方法比較下一組數,你想,如果比較大的那個數往后排,這不就是升序嗎?

然后,你想降序,把函數改成b-a了,現在sort方法得到的返回值是b-a的了,現在a還是100,b還是20,b-a<=-1,sort方法一看,你這個返回值小于-1啊,a就應該在b前面,然后,繼續冒泡排序,現在的情況是,比較小的那個數往后排,這不就是降序嗎?


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

juan_zi 提問者

很感謝!
2016-03-10 回復 有任何疑惑可以回復我~
#2

juan_zi 提問者

回答的非常詳細,理解啦,謝謝
2016-03-10 回復 有任何疑惑可以回復我~

sort的參數,為一個函數,那么這個函數接受2個參數,a, b
這個函數在:
a == b 是為0
a > b 時為 1
a < b時 為-1

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

舉報

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

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

進入課程

數組排序,sort()函數

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

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

幫助反饋 APP下載

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

公眾號

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