ホームページ > バックエンド開発 > C++ > C++を使用して配列を最大-最小形式に再配置します

C++を使用して配列を最大-最小形式に再配置します

WBOY
リリース: 2023-09-03 19:45:10
転載
1228 人が閲覧しました

C++を使用して配列を最大-最小形式に再配置します

#ソートされた配列が得られます。この配列を最大および最小の形式で配置する必要があります。つまり、最初の要素が最大の要素、2 番目の要素が最小の要素、3 番目の要素が 2 番目に大きい要素、4 番目の要素が 2 番目に小さい要素になります。など、たとえば -

Input : arr[ ] = { 10, 20, 30, 40, 50, 60 }
Output : { 60, 10, 50, 20, 40, 30 }
Explanation : array is rearranged in the form { 1st max, 1st min, 2nd max, 2nd min, 3rd max, 3rd min }

Input : arr [ ] = { 15, 17, 19, 23, 36, 67, 69 }
Output : { 69, 15, 67, 17, 36, 19, 23 }
ログイン後にコピー

配列を最大値と最小値の形式に並べ替える方法があります -

解決策を見つける方法

配列を最大値と最小値で再配置する方法 最小形式で配列形式を再配置します -

ダブル ポインタ メソッド

2 つの変数 min と max を使用します。ここでは最大要素と最小要素を指し、再配置された Arranged 配列を格納するための同じサイズの新しい空の配列。次に、配列を反復処理し、反復された要素のインデックスが偶数である場合は、arr[max] 要素を空の配列に追加し、max を 1 だけ減分します。要素のインデックスが奇数の場合は、arr[min] 要素を空の配列に追加し、min を 1 ずつ増分します。最大値が最小値よりも小さくなるまでこれを繰り返します。

#include <bits/stdc++.h>
using namespace std;

int main () {
   int arr[] = { 1, 2, 3, 4, 5, 6 };
   int n = sizeof (arr) / sizeof (arr[0]);
   // creating a new array to store the rearranged array.
   int final[n];
   // pointing variables to initial and final element index.
   int min = 0, max = n - 1;
   int count = 0;
   // iterating over the array until max is less than or equals to max.
   for (int i = 0; min <= max; i++) {
      // if count is even then store max index element

      if (count % 2 == 0) {
         final[i] = arr[max];
         max--;
      }
      // store min index element
      else {
         final[i] = arr[min];
         min++;
      }
      count++;
   }
   // printing the final rearranged array.
   for (int i = 0; i < n; i++)
      cout << final[ i ] << " ";
   return 0;
}
ログイン後にコピー

出力

6 1 5 2 4 3
ログイン後にコピー
上記のコードの説明

    変数は min=0 および max = array_length(n) に初期化されます - 1.
  • for (int i = 0; min カウントが奇数の場合、(最大) 個の要素が最終配列に追加され、変数 max が 1 減分されます。
  • カウントが偶数であると仮定すると、(min)となります。この場合、要素は最終配列に追加され、変数 min が 1 ずつ増加します。
  • 最後に、結果の配列は Final[ ] 配列に保存されます。
結論

この記事では、指定された配列を最大-最小形式に再配置する解決策について説明しました。解へのアプローチを議論し、時間計算量 O(n) の楽観的な解を使用してそれを解決します。このための C プログラムも作成しました。同様に、このプログラムは C、Java、Python などの他の言語でも作成できます。この記事がお役に立てば幸いです。

以上がC++を使用して配列を最大-最小形式に再配置しますの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:tutorialspoint.com
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート