この投稿では、線形時間でCのアレイを反転する方法を説明します。

1.補助アレイの使用

簡単な解決策は、入力アレイと同じタイプとサイズの補助アレイを作成し、入力アレイの要素を逆方向に入力してから、補助アレイの内容を元のアレイにコピーすることです。このソリューションの時間計算量は O(n) とが必要です O(n) 余分なスペース、ここで n 入力のサイズです。

ダウンロード  コードを実行する

2.インプレース実装

上記の実装には O(n) 補助アレイ用の余分なスペース。線形 インプレースアルゴリズム 以下に示すように、アレイの両端から要素を読み取り、それらを交換することで実装できます。

ダウンロード  コードを実行する

3.再帰の使用

上記のコードを簡単に変換して、 再帰。ロジックは上記の反復実装と同じままですが、 O(n) の暗黙のスペース コールスタック.

ダウンロード  コードを実行する

 
これは、要素をコールスタックに格納し、再帰的が展開されたときに正しい順序でアレイに戻す別の再帰的プログラムです。

ダウンロード  コードを実行する