配列を順番に並べ替える–最小、最大、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などの他の言語で作成できます。この記事がお役に立てば幸いです。
-
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
-
配列の最大要素を見つけるための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