ホームページ >バックエンド開発 >C++ >C++ を使用して配列の順序を並べ替えます - 最小値、最大値、2 番目の最小値、2 番目の最大値

C++ を使用して配列の順序を並べ替えます - 最小値、最大値、2 番目の最小値、2 番目の最大値

王林
王林転載
2023-09-11 22:29:02866ブラウズ

使用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##」を使用できます。 #" と "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 減分されます。
  • 最後に、並べ替えた配列を reorder_array[] に保存します。
結論

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

以上がC++ を使用して配列の順序を並べ替えます - 最小値、最大値、2 番目の最小値、2 番目の最大値の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はtutorialspoint.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。