C ++に組み込まれているソート関数を使用して、正の数と負の数を並べ替えます
正の数と負の数の両方を含む整数型の配列、たとえば、任意のサイズのarr[]が与えられます。タスクは、配列のすべての要素がC ++ STLの組み込みの並べ替え機能と、結果のコーディングと印刷の再帰的手法を使用して並べ替えられるように、配列を再配置することです。
このためのさまざまな入出力シナリオを見てみましょう-
入力 − int arr [] ={4、2、-1、-1、6、-3、0}
出力 −組み込みのソート機能を使用した正と負の数の再配置は次のとおりです。-3-1 -1 0 2 4 6.
説明 −正の要素と負の要素の両方を含むサイズ7の整数配列が与えられます。ここで、配列のすべての要素が並べ替えられるように配列を再配置します。つまり、すべての負の要素がすべての正の要素の前に表示され、最終結果は-3 -1 -1 0 246になります。
>入力 − int arr [] ={-9、-10、2、3、10、5、8、4}
出力 −組み込みのソート機能を使用した正と負の数の再配置は次のとおりです。-10-9 2 3 4 5 8 10.
説明 −正の要素と負の要素の両方を含むサイズ8の整数配列が与えられます。ここで、配列のすべての要素が並べ替えられるように配列を再配置します。つまり、すべての負の要素がすべての正の要素の前に表示され、最終結果は-10 -9 2 3 4 5810になります。
以下のプログラムで使用されているアプローチは次のとおりです
sort()の使用
-
整数型要素の配列を入力し、配列のサイズを計算します。
-
データを関数Rearrangement(int arr []、int size)
に渡します -
関数内で、Rearrangement(int arr []、int size)
-
配列と配列のサイズをパラメーターとして関数に渡すことにより、C ++ STLの並べ替え関数を呼び出すと、並べ替えられた配列が返されます。
-
-
結果を印刷します。
再帰の使用
-
整数型要素の配列を入力し、配列のサイズを計算します。
-
一時変数、たとえばtempを宣言します。
-
iからiまでのループFORを配列のサイズより小さく開始します。ループ内で、arr [i]が0未満かどうかを確認してから、温度を1ずつ上げます。
-
関数へのパラメーターとして配列、0、およびサイズ-1を渡すことにより、Rearrangement(arr、0、(size-1))を呼び出します。
-
配列、温度、サイズ-1を関数に渡して、rotate関数を呼び出します。
-
関数Rearrangement(int arr []、int first、int last)の内部
-
IFが最初に最後に等しいかどうかを確認してから、戻ります。
-
関数Rearrangement()を再帰的に呼び出し、配列、最初の+1、最後の要素をパラメーターとして渡します。
-
0より大きいIFarr[first]をチェックしてから、Rotate(arr、(first + 1)、last)およびRotate(arr、first、last)として関数を呼び出します
-
-
関数Rotate(int arr []、int first、int last)内
-
最初が最後よりも少ない時間に開始します。 while内で、整数変数をtempとして宣言し、arr [first]で設定してから、arr[first]をarr[last]に設定し、arr [last]をtempに設定します。最初の変数を1ずつインクリメントし、最後の変数を1デクリメントします。
-
-
結果を印刷します。
1。 sort()関数の使用
例
#include <bits/stdc++.h> using namespace std; //using the sort() function void Rearrangement(int arr[], int size){ sort(arr, arr + size); } int main(){ int arr[] = {4, 2, -1, -1, 6, -3, 0}; int size = sizeof(arr)/sizeof(arr[0]); //calling the function to rearrange the array Rearrangement(arr, size); //print the array after rearranging the values cout<<"Rearrangement of positive and negative numbers using inbuilt sort function is: "; for(int i = 0; i < size; i++){ cout<< arr[i] << " "; } return 0; }
出力
上記のコードを実行すると、次の出力が生成されます
Rearrangement of positive and negative numbers using inbuilt sort function is: -3 -1 -1 0 2 4 6
2。関数への再帰呼び出し
例
#include <bits/stdc++.h> using namespace std; void Rotate(int arr[], int first, int last){ while(first < last){ int temp = arr[first]; arr[first] = arr[last]; arr[last] = temp; first++; last--; } } void Rearrangement(int arr[], int first, int last){ if(first == last){ return; } Rearrangement(arr, (first + 1), last); if(arr[first] >= 0){ Rotate(arr, (first + 1), last); Rotate(arr, first, last); } } int main(){ int arr[] = {4, 2, -1, -1, 6, -3, 0}; int size = sizeof(arr)/sizeof(arr[0]); int temp = 0; for(int i = 0; i < size; i++){ if(arr[i] < 0){ temp++; } } //calling the function to rearrange the array Rearrangement(arr, 0, (size - 1)); Rotate(arr, temp, (size - 1)); //print the array after rearranging the values cout<<"Rearrangement of positive and negative numbers using Recursion is: "; for(int i = 0; i < size; i++){ cout<< arr[i] << " "; } return 0; }
出力
上記のコードを実行すると、次の出力が生成されます
Rearrangement of positive and negative numbers using Recursion is: -1 -1 -3 4 2 6 0
-
ヒープソートアルゴリズムを使用して10個の要素の配列をソートするC++プログラム
ヒープソートは、バイナリヒープデータ構造に基づいています。バイナリヒープでは、親ノードの子ノードは最大ヒープの場合はそれ以下であり、親ノードの子ノードは最小ヒープの場合はそれ以上です。 ヒープソートのすべてのステップを説明する例は次のとおりです。 並べ替え前の10個の要素を含む元の配列は-です 20 7 1 54 10 15 90 23 77 25 この配列は、max-heapifyを使用してバイナリ最大ヒープに組み込まれています。配列として表されるこの最大ヒープは、次のように与えられます。 90 77 20 54
-
配列をC++関数に渡す
C ++では、配列全体を引数として関数に渡すことはできません。ただし、インデックスなしで配列の名前を指定することにより、配列へのポインタを渡すことができます。 1次元配列を関数の引数として渡したい場合は、次の3つの方法のいずれかで関数の仮パラメーターを宣言する必要があります。3つの宣言メソッドはすべて、整数ポインターが実行されることをコンパイラーに通知するため、同様の結果を生成します。受け取る必要があります。 配列を関数に渡す方法は3つあります- ポインタとしての正式なパラメータ void myFunction(int *param) { // Do so