2011-04-20 70 views
0

可能重複:
Javascript Array.sort implementation?.sort()如何在JavaScript中工作?

我想知道如何.sort()作品在JavaScript中。它使用什麼算法?

function sortNumber(a, b) { 
    return a-b; 
} 

var n = ["1", "5", "40", "2", "9", "3"]; 
document.write(n.sort(sortNumber)); 
+1

我修復了你的格式。請在下次使用預覽窗格。 – 2011-04-20 11:22:15

+1

「如何'.sort()'工作」以什麼方式?它排序。精確的算法可能是實現定義的。你還想知道什麼? – 2011-04-20 11:22:42

+0

嗨tomalak,感謝您做格式化。我想知道在.sort()函數上使用哪種算法。 – 2011-04-20 11:24:59

回答

2

這個問題被回答了here

Mozilla使用合併排序,Webkit使用選擇排序,而IE是閉源的,所以很難說。

語言規範沒有要求實現使用什麼算法,並且您的代碼不應該太在意它太多。

-1

在Firefox 4中,元素被轉換爲數字並按這種方式排序。 在你的情況下,這是升序。

到目前爲止,我沒有在其他瀏覽器中測試過它。

+0

」轉換爲數字。「? – Dykam 2011-04-20 11:30:34

+0

元素不會轉換爲數字。元素不會改變。表達式'a-b'計算數字結果,就是這樣。 – pepkin88 2011-04-20 11:42:46

0

100元件測試陣列的比較數:

Safari瀏覽器5 - 541
歌劇11.10 - 586
火狐4 - 601
IE 9 - 618
鉻9 - 783

而對於1000個元素測試陣列:

Safari 5 - 8700
Firefox 4 - 8998
歌劇11.10 - 9137
IE 9 - 11055
鉻9 - 11536

它沒有描述的算法,但仍然顯示了一些有趣的數據。