Re: [問題] JavaScript中,Array Method中的sort()

看板Ajax作者 (^^)時間14年前 (2009/11/11 18:49), 編輯推噓2(204)
留言6則, 3人參與, 最新討論串2/2 (看更多)
※ 引述《luckymoon (青谷)》之銘言: : 小弟想請問一下Array的sort()這個Method。 : sort()是用來做陣列中元素的排序,那麼小弟看到書中解釋,如果 : 要做字母排列以外的方式排序,就必須傳遞一個"比較函式"給它做 : 為參數。 : var a = [33, 4, 1111, 222]; : a.sort(function(a,b){ : return a - b; : }); : 書中寫,用這樣的就可以以數字大小順序做排列,那麼,我想知道 : 的是,sort()裡面的函數是怎麼運作的。 原則上任何比較式的排序都有可能 (selection/insertion/bubble/quick....etc) 何不自己實驗看看? var a = [5, 4, 3,2,1]; a.sort(function(a1,b1){ alert(a1+":"+b1); return a1 - b1; }); 我自己fx跑出來的結果 猜想狀況,不知道是不是真的... 5:4 [ 4,5,3,2,1 ] 5:3 [ 4,3,5,2,1 ] 4:3 [ 3,4,5,2,1 ] 5:2 [ 3,4,2,5,1 ] 4:2 [ 3,2,4,5,1 ] 3:2 [ 2,3,4,5,1 ] 5:1 [ 1,2,3,4,5 ] 2:1 假設是我模擬的這樣 , 那應該算是 insertion sort 吧.. 不過只是假設就是了... -- I am a person, and I am always thinking . Thinking in love , Thinking in life , Thinking in why , Thinking in worth. I can't believe any of what , I am just thinking then thinking , but worst of all , most of mine is thinking not actioning... -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 116.59.3.119

11/11 19:44, , 1F
的確要有實驗的精神,我自己試了一下,ie跟其他瀏覽器跑
11/11 19:44, 1F

11/11 19:45, , 2F
的'過程'不一樣,結果相同,ie多跑了好幾次,想不到這種
11/11 19:45, 2F

11/11 19:45, , 3F
內建函式也會因為瀏覽器的不同,效率也不一樣
11/11 19:45, 3F

11/11 20:30, , 4F
八卦:Firefox 是用 Merge Sort
11/11 20:30, 4F

11/11 20:31, , 5F
(Bug 224128)
11/11 20:31, 5F

11/12 16:13, , 6F
這個過程感覺不是Insertion Sort? 要怎麼觀察中間狀態?
11/12 16:13, 6F
文章代碼(AID): #1A-fR9Dm (Ajax)
文章代碼(AID): #1A-fR9Dm (Ajax)