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

配列を順番に並べ替える–最小、最大、2番目に小さい、2番目に大きい、。 C++の使用


配列が与えられます。この配列は、最初の要素が最小要素、2番目の要素が最大要素、3番目の要素が2番目の最小要素、4番目の要素が2番目の最大要素というように配置する必要があります。例-

Input : arr[ ] = { 13, 34, 30, 56, 78, 3 }
Output : { 3, 78, 13, 56, 34, 30 }
Explanation : array is rearranged in the order { 1st min, 1st max, 2nd min, 2nd max, 3rd min, 3rd max }

Input : arr [ ] = { 2, 4, 6, 8, 11, 13, 15 }
Output : { 2, 15, 4, 13, 6, 11, 8 }

解決策を見つけるためのアプローチ

この問題は、2つの変数' xを使用して解決できます。 'sおよび'y 'ここで、最大要素と最小要素を指しますが、その配列は並べ替える必要があるため、最初に配列を並べ替えてから、同じサイズの新しい空の配列を作成して、並べ替えられた配列を格納します。次に、配列を反復処理し、反復要素が偶数のインデックスにある場合は、arr [x]要素を空の配列に追加し、xを1ずつインクリメントします。要素が奇数のインデックスにある場合は、arr[y]要素をに追加します。配列を空にして、yを1ずつデクリメントします。yがxより小さくなるまでこれを実行します。

#include <bits/stdc++.h>
using namespace std;
int main () {
   int arr[] = { 2, 4, 6, 8, 11, 13, 15 };
   int n = sizeof (arr) / sizeof (arr[0]);

   // creating a new array to store the rearranged array.
   int reordered_array[n];

   // sorting the original array
   sort(arr, arr + n);

   // pointing variables to minimum and maximum element index.
   int x = 0, y = n - 1;
   int i = 0;

   // iterating over the array until max is less than or equals to max.
   while (x <= y) {
   // if i is even then store max index element

      if (i % 2 == 0) {
         reordered_array[i] = arr[x];
         x++;
      }
      // store min index element
      else {
         reordered_array[i] = arr[y];
         y--;
      }
      i++;
   }
   // printing the reordered array.
   for (int i = 0; i < n; i++)
      cout << reordered_array[i] << " ";

   // or we can update the original array
   // for (int i = 0; i < n; i++)
   // arr[i] = reordered_array[i];
   return 0;
}

出力

2 15 4 13 6 11 8

上記のコードの説明

  • 変数はx=0およびy=array_length(n)-1として初期化されます 。
  • while(x <=y)は、xがyより大きくなるまで配列をトラバースします。
  • カウントが偶数(x)の場合、要素は最終的な配列に追加され、変数xは1ずつ増加します。
  • iが奇数の場合、(y)要素が最終配列に追加され、変数yが1だけデクリメントされます。
  • 最後に、Reordered配列はreordered_array[]に格納されます。

結論

この記事では、指定された配列を最小、最大の形式で再配置するためのソリューションについて説明しました。同じためのC++プログラムも作成します。同様に、このプログラムはC、Java、Pythonなどの他の言語で作成できます。この記事がお役に立てば幸いです。


  1. C ++のBST(BSTの順序統計量)でk番目に小さい要素を検索します

    二分探索木があり、入力として値Kがあるとすると、ツリー内でK番目に小さい要素を見つける必要があります。 したがって、入力が次のような場合 k =3の場合、出力は15になります。 これを解決するには、次の手順に従います- 関数find_kth_smallest()を定義します。これは、root、count、k、を取ります。 ルートがNULLの場合、- NULLを返す left =find_kth_smallest(rootの左側、カウント、k) leftがNULLでない場合、- 左に戻る (カウントを1つ増やします) count

  2. 配列の最大要素を見つけるためのC++プログラム

    配列には複数の要素が含まれており、配列内の最大の要素は他の要素よりも大きい要素です。 たとえば。 5 1 7 2 4 上記の配列では、7が最大の要素であり、インデックス2にあります。 配列の最大の要素を見つけるプログラムは次のとおりです。 例 #include <iostream> using namespace std; int main() {    int a[] = {4, 9, 1, 3, 8};    int largest, i, pos;    largest = a[0