2
var numArray = [4,2,5,3];
numArray.sort(function(a,b){
  console.log("a:" + a + ", b:" + b);
  return a-b;
});

考えられる3つの戻り値は次のとおりです。<0(0未満)、0、または> 0(0より大きい):

 Less than 0: Sort "a" to be a lower index than "b"
 Zero: "a" and "b" should be considered equal, and no sorting performed.
 Greater than 0: Sort "b" to be a lower index than "a".

私はコンソールでこのようになっています

    a:4、b:2
    a:4、b:5
    a:5、b:3
    a:2、b:3
    a:4、b:3
    [2、3、4、5]

上記のようにaとbの値がどのように変化するかを知ることができますか?

最初のステップでは、a=4およびb=2です。この場合、スワップします。次に、配列は[2,4,5,3]になります。

2番目のステップでは、a=4およびb=5です。この場合、アイテムは同じままです。次に、配列は[2,4,5,3]になります。

3番目のステップでは、a=5およびb=3です。この場合、スワップします。次に、配列は[2,4,3,5]になります。

このステップまでは大丈夫です。しかしその後、aとbの値が2と4ではなくそれぞれ2と3>になります。

誰でも私を助けることができますか?

前もって感謝します

4

1 に答える 1

2

ソート方法が単純なコンペアアンドスワップアルゴリズムを使用するという保証はありません。

ブラウザがマージソートのようなものを使用している可能性が高いですが、特定のアルゴリズムはブラウザとバージョンによって異なります。

Firefoxはオープンソースであるため、ソースコードを確認することでソートがどのように実装されているかを確認できます。マージソートを使用します。

于 2012-06-29T06:11:48.427 に答える