C++でソートされた配列の2乗
ソートされた整数の指定された配列では、タスクはすべての配列要素の平方を印刷し、配列をソートされた順序で印刷することです。たとえば、
入力-1 −
arr[ ] = { -3,-1,0,1,4,6 };
出力 −
{0,1,1,9,16, 36}
説明 −指定された配列[-3、-1,0,1,4,6]の各要素の二乗は[0,1,1,9,16,36]です。
入力-2 −
arr[ ]= { 0,1,2,8,9 }
出力 −
{0,1,4,64,81}
説明 −指定された配列[0,1,2,8,9]の各要素の二乗は[0,1,4,64,81]です。
この問題を解決するためのアプローチ
この特定の問題を解決するために、2ポインターアプローチを使用できます。 Two-Pointerでは、左右に2つのポインターを使用します。左のポインターは配列の最初の要素で初期化され、右のポインターは配列の終了要素を指します。
配列の要素を反復処理しながら、値の2乗を見つけて、右の整数の2乗が左の整数よりも大きいか小さいかを確認します。
-
整数の配列を昇順で入力します。
-
整数関数squareAndSort(int * arr、int n)は、入力を整数の配列として受け取り、配列の各要素の2乗をソートされた方法で返します。
-
配列の左の要素と右端の要素を使用して、左右の2つのポインタを初期化します。
-
要素の正方形を印刷して、右側の要素の正方形と比較します。
-
それに応じて、左右のポインタをインクリメントおよびデクリメントします。
例
#include <bits/stdc++.h> using namespace std; vector<int> squareAndSort(vector<int>&arr){ int left= 0; int right= arr.size()-1; vector<int>vec; while(left<=right){ while(left <= right) { int v1 = arr[left]*arr[left]; int v2 = arr[right]*arr[right]; if(v1 <= v2) { vec.push_back(v2); right--; } else { vec.push_back(v1); left++; } } reverse(vec.begin(), vec.end()); } return vec; } int main(){ vector<int>arr= {-3,-1,0,1,4,6}; vector<int>ans= squareAndSort(arr); for(auto x:ans){ cout<<x<<" "; } return 0; }
出力
上記のコードを実行すると、次のように出力が生成されます
0 1 1 9 16 36
配列の各要素の2乗は、9,1,0,1,16,36です。これらの要素を並べ替えると、出力は0 1 1 91636になります。
-
C++での並べ替え
このセクションでは、C++で並べ替えアルゴリズムを実行する方法を説明します。並べ替えられた配列は、各要素が数値、アルファベット順などの順序で並べ替えられた配列です。バブルソート、挿入ソート、選択ソート、マージソート、クイックソート、ヒープソートなど、数値配列をソートするための多くのアルゴリズムがあります。選択ソートを使用した配列のソートの詳細については、以下を参照してください。 選択ソートは、ソートされた配列を生成するソート方法です。これは、配列内の最小の要素を繰り返し見つけて、ソートされていない部分の先頭にある要素と交換することによって行われます。 選択ソートを使用してソートされた配列を
-
ソートされた配列を実装するC++プログラム
並べ替えられた配列は、各要素が数値、アルファベット順などの順序で並べ替えられた配列です。バブルの並べ替え、挿入の並べ替え、選択の並べ替え、マージの並べ替え、クイック並べ替えなど、数値の配列を並べ替えるアルゴリズムは多数あります。ヒープソートなど。選択ソートを使用した配列のソートの詳細については、以下を参照してください。 選択ソートは、ソートされた配列を生成するソート方法です。これは、配列内の最小の要素を繰り返し見つけて、ソートされていない部分の先頭にある要素と交換することによって行われます。 選択ソートを使用してソートされた配列を実装するプログラムは次のとおりです。 例 #include&