Maison  >  Article  >  développement back-end  >  En C++, réorganisez les nombres positifs et négatifs en utilisant un espace supplémentaire fixe

En C++, réorganisez les nombres positifs et négatifs en utilisant un espace supplémentaire fixe

王林
王林avant
2023-09-13 22:25:051240parcourir

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.

Examinons différents scénarios d'entrée et de sortie pour cette −

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.

La méthode utilisée dans le programme ci-dessous est la suivante

  • 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.

Exemple

#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;
}

Output

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!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer