JavaScript Array#sort() の背後にあるアルゴリズムを詳しく調べる
JavaScript Array#sort() 関数は、整理のための多用途ツールとして機能します配列内の要素。さまざまな引数や関数に適応できる一方で、次のような疑問が生じます: どのようなアルゴリズムがそのバニラ実装のバックボーンとして機能するのでしょうか?
数値配列の内部
によるとWebKit (Chrome と Safari を動かすコア エンジン) のソース コードに変換すると、数値配列またはプリミティブ型を含む配列は C 標準によるソートを受けます。 std::qsort として知られるライブラリ関数。この関数は通常、効率的な並べ替えを実現するためにクイックまたはイントロソート手法を使用します。
非数値配列の並べ替え戦略
連続した非数値配列の場合、マージまたは、クイックソートを使用して希望の順序を確立します。これら 2 つの手法の選択は可用性によって決まります。安定性のためにマージ ソートが優先されますが、それがない場合にはクイック ソートが使用されます。
多様な配列型の処理
以外の場合-連続配列と連想配列の場合、WebKit は選択ソートまたは AVL ツリーを使用します。残念ながら、特定の割り当てに関する詳細はドキュメントからは多少不明瞭なままです。
改良の呼びかけ
WebKit のコードベースは、ソートの改良の必要性を表明する興味深いメモを明らかにしています。アルゴリズム。これは、潜在的な将来の拡張機能として基数ソートの探求を示唆しており、優れたパフォーマンスの可能性を認識しています。ただし、この改善が近い将来に実施されるかどうかはまだわかりません。
以上がJavaScript の「Array#sort()」はどのような並べ替えアルゴリズムを使用しますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。