2015-01-01 54 views
2
var anArray = [ 5, 4, 8 , 1, 3] ; 

anArray.sort(function (a,b){return a - b}); 

1)有人可以運行我通過JavaScript如何執行排序方法與函數作爲參數傳遞?整數數組的排序方法如何工作? JS

  • 它會比較5 4,然後,因爲它是積極的,4將前5。然後,它會比較5與所有其他號碼,但1和3也小於5.因此,如何Java腳本知道哪個位置把它們放在5之前?

  • 然後它會比較4與其他每個數字和8與其他每個數字等等...... java腳本如何做到這一點?我想用筆和紙做。

2)爲什麼作爲參數傳遞的函數是無名的?

謝謝。

+1

在大多數情況下,合併排序或快速排序使用它們更快('nlogn'運行時間).. –

+1

[這裏是一個維基百科的文章,以幫助您開始使用如何排序的作品。(HTTP:// en.wikipedia.org/wiki/Sorting_algorithm)規範中沒有規定用於JavaScript的精確算法。 – Pointy

回答

3
  1. 比較器功能究竟是如何被調用—即,在—傳遞的值的序列不是由語言的規範定義。它完全依賴於特定的JavaScript實現以及(可能)依賴於正在排序的數組中的值。只要說排序算法在想要比較兩個數字時調用你的函數,就是這樣。

    該函數預期會返回一個負值,零值或正值,表示這兩個數字的排序應該是第一個排在第一位,即可以先到達,或者第二個排在第一位。一個快速的方法是從第一個數字減去第二個數字。

  2. 示例代碼中的函數是一個匿名函數。它不需要名稱,因爲它將作爲函數調用本身的結果綁定到接收函數中的符號。如果你願意,你可以給這個函數一個名字。