ホームページ >ウェブフロントエンド >jsチュートリアル >JavaScript を使用して挿入ソートを実装し、数値の配列を昇順にソートします。

JavaScript を使用して挿入ソートを実装し、数値の配列を昇順にソートします。

WBOY
WBOY転載
2023-08-23 21:33:021650ブラウズ

使用 JavaScript 实现插入排序以按升序对数字数组进行排序

配列ソートの技術は、データの効率的な編成と操作を可能にするため、プログラミングの世界では非常に重要です。信頼性の高い並べ替えアルゴリズムを実装する場合、挿入並べ替えは多用途かつ効率的な選択肢になります。この記事では、JavaScript の複雑な世界を詳しく掘り下げ、数値の配列を昇順に並べ替える挿入ソートの実装プロセスについて説明します。アルゴリズムの基礎となる仕組みを理解し、JavaScript の力を活用することで、開発者は数値データを効率的に並べ替えて整理する可能性を解き放ち、それによってアプリケーションのパフォーマンスと使いやすさを向上させることができます。

###問題文###

現在の課題には、JavaScript を使用して数値の配列を昇順に並べ替える挿入並べ替えアルゴリズムを実装するタスクが含まれます。主な目標は、指定された配列の要素をインテリジェントに再配置し、後続の各要素がその数値に基づいて前の要素に対して正しい位置に配置されるようにするプログラムを設計することです。たとえば、配列

を提供するとします。 リーリー

挿入ソート アルゴリズムを実行すると、予期される結果は

のような昇順に従う配列になります。 リーリー ###方法###

この記事では、JavaScript で上記の問題を解決するためのさまざまな方法を見ていきます -

基本的な挿入ソート

  • バイナリ挿入ソート

  • 再帰的挿入ソート

  • 方法 1: 基本的な挿入ソート

  • 基本的な挿入ソート アルゴリズムは、配列内のソートされたサブ配列を維持します。 2 番目の要素から始めて、各要素が部分配列内の前の要素と比較され、小さい場合は右に移動されます。このプロセスは、正しい位置が見つかって要素が挿入されるまで続きます。このプロセスがすべての要素に対して繰り返され、完全にソートされた配列が得られます。
###例###

insertionSort 関数は、配列 arr を入力として受け取り、挿入ソート アルゴリズムを使用してソートされた配列を返します。 2 番目の要素から繰り返して、現在の変数に格納します。 while ループは、現在の要素を並べ替えられた部分配列内の前の要素と比較し、大きい方の要素を右に移動します。ループは、配列の先頭に到達するか、より小さな要素が見つかるまで継続します。その後、現在の要素がソートされた部分配列の正しい位置に挿入されます。このプロセスがすべての要素に対して繰り返され、ソートされた配列が生成されます。

リーリー ###出力###

以下はコンソール出力です -

リーリー

方法 2: バイナリ挿入ソート

バイナリ挿入ソート アルゴリズムは、ソートされたサブ配列内でバイナリ検索を利用して各要素の正しい位置を決定することにより、基本的な挿入ソートの効率を向上させます。線形検索の代わりに、現在の要素と部分配列の中央の要素を比較し、それに応じて検索範囲を調整することによって二分検索が実行されます。挿入ポイントが決定されたら、要素を右に移動してスペースを作り、現在の要素が挿入されます。このプロセスがすべての要素に対して繰り返され、完全にソートされた配列が得られます。

###例###

binaryInsertionSort 関数は、配列 arr を受け取り、バイナリ挿入ソート アルゴリズムを使用してソートされた配列を返します。最初の要素がソートされていると仮定して、2 番目の要素から繰り返します。現在の要素は現在の変数に保存されます。このアルゴリズムは、ソートされたサブ配列で二分検索を実行し、現在の要素を中央の要素と比較し、検索範囲を調整することによって、現在の要素の正しい位置を見つけます。位置が見つかると、アルゴリズムは要素を右に移動し、現在の要素を正しい位置に挿入します。このプロセスがすべての要素に対して繰り返され、ソートされた配列が生成されます。

リーリー ###出力###

以下はコンソール出力です -

リーリー

方法 3: 再帰的挿入ソート

再帰的挿入ソート アルゴリズムは、再帰を使用して配列をソートする挿入ソートの再帰的バージョンです。サイズ 1 以下の部分配列の場合、それらはすでにソートされていると見なされます。より大きな部分配列の場合は、それ自体を再帰的に呼び出して、最後の要素を除いて部分配列を並べ替えます。再帰呼び出しが戻り、部分配列がソートされた後、アルゴリズムはソートされた部分配列内の正しい位置に最後の要素を配置します。これは、最後の要素をソートされた部分配列内の要素と比較し、必要に応じて右にシフトすることによって実現されます。すべての要素が正しい位置に挿入されるまでこのプロセスを繰り返し、完全にソートされた配列が得られます。

###例###

recursiveInsertionSort 関数は、挿入並べ替えアルゴリズムを入力配列に再帰的に適用します。配列がソートされているかどうかをチェックし、ソートされている場合はそれを返します。それ以外の場合は、サイズ n - 1 の部分配列に対してそれ自体を再帰的に呼び出します。この関数は再帰的に呼び出された後、while ループを使用して最後の要素とソートされた部分配列内の要素を比較します。要素が大きい場合は、右側に移動します。このプロセスは、ループが配列の先頭に到達するか、より小さな要素が見つかるまで続きます。最後に、最後の要素が正しい位置に挿入されます。このプロセスがすべての要素に対して繰り返され、ソートされた配列が生成されます。

リーリー ###出力###

以下はコンソール出力です -

[ 1, 2, 4, 7, 9 ]

结论

最终,使用 JavaScript 实现插入排序算法以升序排列数字数组,对于寻求熟练排序方法的开发人员来说是一个精明的选择。通过迭代地将元素放置在适当的位置,该算法展示了一种组织数值数据的敏锐方法。虽然插入排序可能不像其他排序技术那样广受好评,但它的效率和简单性使其在某些情况下成为非常宝贵的工具。在 JavaScript 中使用此算法使开发人员能够在其编码库中使用鲜为人知但功能强大的工具,从而生成精简且有序的数组。总之,利用 JavaScript 中插入排序算法的强大功能,对于那些在数组排序中寻求精确性和优雅性的人来说,是一种不切实际的努力。

以上がJavaScript を使用して挿入ソートを実装し、数値の配列を昇順にソートします。の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はtutorialspoint.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。