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

配列回転の反転アルゴリズムのCプログラム


アルゴリズム 与えられた問題を解決するために実行される一連の命令です。ここでは、配列回転の反転アルゴリズムについて説明し、反転アルゴリズムのプログラムを作成します。

それでは、この問題を解決するために知っておく必要のあるいくつかの用語に取り掛かりましょう-

配列 −同じデータ型の要素のコンテナ。配列のサイズ(要素数)は、配列の宣言時に固定されます。

配列のローテーション −配列を回転させると、配列の要素の順序が変わります。要素のインデックスを1つ増やし、最後の要素のインデックスを0に変更します。

配列ローテーションの例

Array[] = {3, 6, 8,1, 4, 10}
Rotated 2 times gives,
Array[] = {4, 10, 3, 6, 8, 1, 4}

反転アルゴリズム

配列回転のアルゴリズムの1つは、反転アルゴリズムです。このアルゴリズムでは、配列のローテーションを実行するためにサブ配列が作成され、反転されます。サブアレイが作成され、個別にローテーションされてから、結合されて元に戻され、ローテーションされたアレイが取得されます。

アルゴリズム

Input : array arr[] , positions that are needed to be rotated r , length of array n.
Step 1: Split the array into two sub arrays of 0 - (d-1) and d - (n-1) size, a1 [d] and a2[n-d];
Step 2: Reverse both arrays using the reverse method.
Step 3: Join a1 and a2 back to get an array of original size.
Step 4: Reverse this joined array to get the rotated array.
Step 5: Print the array using the standard output method.

arr[] = {1 ,4, 2, 8, 3, 6, 5}, d = 3, n = 7
a1[]  = {1,4,2} ; a2 = {8,3,6,5}
a1r[] = {2,4,1} // reversed a1
a2r[] = {5,6,3,8} // reversed a2
ar[]  = {2,4,1,5,6,3,8} // a1r+a2r
arr[] = {8,3,6,5,1,4,2} // final answer.

#include <stdio.h>
void reverse(int arr[], int start, int end){
   int temp;
   while (start < end) {
      temp = arr[start];
      arr[start] = arr[end];
      arr[end] = temp;
      start++;
      end--;
   }
}
int main(){
   int arr[] = { 54, 67, 12, 76, 25, 16, 34 };
   int n = 7;
   int d = 2;
   printf("The initial array is :\n");
   for (int i = 0; i < n; i++)
      printf("%d ", arr[i]);
   reverse(arr, 0, d - 1);
   reverse(arr, d, n - 1);
   reverse(arr, 0, n - 1);
   printf("\nThe left reversed array by %d elements is:\n",d);
   for (int i = 0; i < n; i++)
      printf("%d ", arr[i]);
   return 0;
}

出力

The initial array is :
54 67 12 76 25 16 34
The left reversed array by 2 elements is:
12 76 25 16 34 54 67

  1. ソートをカウントするためのPythonプログラム

    この記事では、以下に示す問題ステートメントの解決策について学習します。 問題の説明 −配列が与えられたので、カウントソートの概念を使用して配列をソートする必要があります。 ソートのカウントは、特定の範囲のキーを処理する手法です。これには、異なるキーと値を持つオブジェクトの数を数えることが含まれます。最後に、算術計算を行って各オブジェクトの位置を取得し、出力を表示します。 次に、以下の実装のソリューションを見てみましょう- 例 def countSort(arr):    # The output character array that will have sorte

  2. 配列ローテーション用のPythonプログラム

    この記事では、以下に示す問題ステートメントの解決策について学習します。 問題の説明 −テキストとパターンが与えられた場合、パターンのすべての出現とその順列(またはアナグラム)をテキストで印刷する必要があります。 次に、以下の実装のソリューションを見てみましょう- 例 # maximum value MAX = 300 # compare def compare(arr1, arr2):    for i in range(MAX):       if arr1[i] != arr2[i]:       &nbs