ホームページ  >  記事  >  ウェブフロントエンド  >  配列回転のためのブロック交換アルゴリズム用の JavaScript プログラム

配列回転のためのブロック交換アルゴリズム用の JavaScript プログラム

王林
王林転載
2023-08-25 17:01:221036ブラウズ

用于数组旋转的块交换算法的 JavaScript 程序

配列要素の回転とは、指定された配列の要素を特定の位置数だけ左または右に移動することを意味します。配列がループの形式であると仮定し、エッジの要素をもう一方の端に向かって回転させます。配列回転のブロック スワップ アルゴリズムは、配列の要素を指定された量だけ回転することを意味しますが、回転を使用する代わりに、スワッピング手法が使用されます。再帰的メソッドと反復メソッドを実装します。

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

イラスト

交換アルゴリズムを使用して結果を取得できます。次のセクションで実装します。

再帰的メソッド

このアプローチでは、2 つの配列があると仮定します。最初の配列のサイズは指定された回転数で、もう 1 つは合計サイズから指定された要素数を引いたサイズです。

最初の配列のサイズが小さい場合は、最初の配列の要素を交換し、最後の要素が最初の配列のサイズと同じになります。最初の配列のサイズが大きい場合は、最初の要素を交換します。配列要素は、指定された配列の 2 番目の配列のサイズと等しくなります。

残りの要素については、スワップ配列を変更して再帰関数を呼び出します。

###例### リーリー

時間と空間の複雑さ

上記のコードの時間計算量は N です。ここで、N は指定された配列のサイズです。

上記のコードの空間複雑さは N ですが、これは再帰スタックによって占有されるメモリを考慮した場合に限ります。

反復方法

反復メソッドは再帰メソッドと同じですが、唯一の違いは、再帰呼び出しを使用する代わりに while ループで作業することです。コードを見てみましょう。

###例### リーリー

時間と空間の複雑さ

上記のコードの時間計算量は N です。ここで、N は指定された配列のサイズです。

ここでは余分なスペースを使用していないため、上記のコードのスペース複雑度は 1 または定数です。

###結論は###

このチュートリアルでは、ブロック スワップ アルゴリズムを使用して配列を指定された回転数だけ回転する JavaScript プログラムを実装しました。私たちは、O(N) 時間と O(1) 空間複雑さの反復アプローチを使用してブロック スワップ アルゴリズムを実装しましたが、O(N) 空間複雑さの再帰的アプローチを使用しました。

以上が配列回転のためのブロック交換アルゴリズム用の JavaScript プログラムの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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