Cプログラミング
 Computer >> コンピューター >  >> プログラミング >> Cプログラミング

【C言語】配列の要素をその場で反転するプログラム


配列の反転とは

n個の要素を持つ配列があるとします。この課題では、配列内の要素をその場で(in place)反転し、結果を表示する必要があります。ポイントは、単に逆順に表示するのではなく、配列自体の要素の並びを直接入れ替えるという点です。

例えば、入力が n = 6、arr = [9, 8, 7, 2, 4, 3] の場合、出力は [3, 4, 2, 7, 8, 9] となります。

解決のための手順

この問題は、以下の手順で解くことができます。

  • i を 0 で初期化し、i < n / 2 の間、i を 1 ずつ増やしながら次の処理を繰り返します。
    • temp := arr[i]
    • arr[i] := arr[n - i - 1]
    • arr[n - i - 1] := temp
  • 続いて、i を 0 で初期化し、i < n の間、i を 1 ずつ増やしながら arr[i] を表示します。

重要なのは、ループを配列の前半分だけで回すことです。先頭から i 番目の要素と、末尾から i 番目の要素(arr[n - i - 1])を一時変数 temp を介して交換することで、配列全体が反転されます。もし全要素に対してループを回してしまうと、一度反転した配列が再び元に戻ってしまうため注意しましょう。

実装例

理解を深めるために、以下の実装例を見てみましょう。

#include <stdio.h>
#include <stdlib.h>
#define n 6
int main(){
    int arr[n] = {9, 8, 7, 2, 4, 3};
    int temp;
    for(int i = 0; i<n/2; i++){
        temp = arr[i];
        arr[i] = arr[n-i-1];
        arr[n-i-1] = temp;
    }
    for(int i = 0; i < n; i++){
        printf("%d,", arr[i]);
    }
}

入力

6, 9, 8, 7, 2, 4, 3

出力

3,4,2,7,8,9,

計算量について

このアルゴリズムの時間計算量は O(n) です。また、追加で必要なメモリは一時変数1つ分だけなので、空間計算量は O(1) となります。余分な配列を作らずに済むため、非常に効率的な配列反転の手法と言えます。

  1. C言語で配列を逆順に反転させるプログラムの書き方

    配列とは、共通の名前のもとで管理される、関連性のあるデータ項目の集まりのことです。同じ型の複数の値を効率的に扱いたい場合に活用されます。配列の宣言構文C言語で配列を宣言する際の基本的な構文は以下のとおりです。データ型 配列名 [サイズ];配列の初期化配列は、宣言と同時に初期化することもできます。int a[5] = { 10,20,30,40,50};この例では、整数型の配列 a の5つの要素に、それぞれ10から50までの値が順番に格納されています。C言語で配列を逆順にする方法配列の要素を逆順に並べ替えるには、要素の入れ替え(スワップ)やコピーのテクニックを利用します。たとえば、4つの要素を持

  2. PythonでNumPy配列を逆順に反転させる方法【numpy.flip()の使い方】

    はじめに この記事では、NumPy配列を逆順(反転)にするシンプルなPythonプログラムを紹介します。配列の反転には、NumPyが標準で提供しているnumpy.flip()関数を使用します。この関数は、指定した軸に沿って配列の要素の順序を簡単に反転できる便利な機能です。 アルゴリズム 処理の流れは以下の4ステップです。 ステップ1: numpyをインポートする。 ステップ2: numpy.array()を使ってNumPy配列を定義する。 ステップ3: numpy.flip()関数を使って配列を反転させる。 ステップ4: 結果の配列を出力する。 サンプルコード import numpy a