Maison >développement back-end >C++ >En C++, réorganisez les nombres positifs et négatifs en utilisant un espace supplémentaire fixe
Nous avons un tableau de type entier contenant des nombres positifs et négatifs, disons qu'il s'agit d'un arr[] d'une taille donnée. La tâche consiste à réorganiser le tableau afin que tous les éléments du tableau soient triés à l'aide de la fonction de tri intégrée de C++ STL et en utilisant la récursion. Codage technique et impression des résultats.
input − int arr[] = {4, 2, -1, -1, 6, -3, 0}
output − re Arrange nombres positifs et négatifs, en utilisant un espace supplémentaire constant : -3 -1 -1 0 6 2 4.
Explication − On nous donne un tableau d'entiers de taille 7, contenant des éléments positifs et négatifs. Maintenant, nous allons réorganiser le tableau de manière à ce que tous les éléments du tableau soient triés dans un espace supplémentaire constant et le résultat final sera -3 -1 -1 0 2 4 6.
Entrée − int arr[] = {-9, -10, 2, 3, 10, 5, 8, 4}
Sortie − Réorganiser les nombres positifs et négatifs, en utilisant un espace supplémentaire constant : -9 - 10 2 3 10 5 8 4
Explication − On nous donne un tableau entier de taille 8 contenant des éléments positifs et négatifs. Maintenant, nous allons réorganiser le tableau de manière à ce que tous les éléments du tableau soient triés dans un espace supplémentaire constant et le résultat final sera -9 -10 2 3 10 5 8 4.
Saisissez un tableau d'éléments de type entier et calculez la taille du tableau.
Utilisez une boucle FOR pour imprimer le tableau avant d'effectuer l'opération de réorganisation.
Appelez la fonction Rearrangement(arr, size) en passant le tableau et la taille du tableau comme paramètres.
À l'intérieur de la fonction Rearrangement(arr, size)
définit une variable de type entier i à 0 et j à la taille -1.
Démarrez while (vrai). Pendant ce temps, démarrez une autre boucle et incrémentez i lorsque arr[i] est inférieur à 0 et i est inférieur à la taille.
Lorsque WHILE arr[j] est supérieur à 0 et j est supérieur à 0, diminuez j.
Vérifiez SI i est inférieur à j, puis réglez temp sur arr[i], arr[i] sur arr[j], arr[j] sur temp.
Sinon, sortez de la boucle.
Imprimez les résultats.
#include<iostream> using namespace std; void Rearrangement(int arr[], int size){ int i = 0; int j = size - 1; while(true){ while(arr[i] < 0 && i < size){ i++; } while(arr[j] > 0 && j >= 0){ j--; } if (i < j){ int temp = arr[i]; arr[i] = arr[j]; arr[j] = temp; } else{ break; } } } 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 with constant extra space is: "; for(int i = 0; i < size; i++){ cout<< arr[i] << " "; } return 0; }
Si nous exécutons le code ci-dessus, la sortie suivante sera générée
Rearrangement of positive and negative numbers with constant extra space is: -3 -1 -1 0 6 2 4
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!