Maison > développement back-end > C++ > Réorganiser un tableau pour que arr = i, en utilisant C++

Réorganiser un tableau pour que arr = i, en utilisant C++

PHPz
Libérer: 2023-09-13 11:25:02
avant
1156 Les gens l'ont consulté

重新排列一个数组,使得 arr = i,使用 C++

Nous avons un tableau de type entier positif, en supposant qu'il s'agit de arr[], sa taille peut être donnée arbitrairement et les éléments du tableau doivent être supérieurs à 0 mais inférieurs à la taille du tableau. La tâche consiste à réorganiser le tableau de telle sorte que si arr[i] est égal à « i », alors « i » existe dans le tableau, sinon définissez l'élément arr[i] sur -1 et imprimez le résultat final.

Examinons différents scénarios d'entrée et de sortie pour ce problème :

input − int arr[] = {0, 8, 1, 5, 4, 3, 2, 9 }

output − re The Le tableau organisé est : 0 1 2 3 4 5 -1 -1

Explication − Nous avons un tableau d'entiers de taille 8, et tous les éléments du tableau sont inférieurs à 8. Maintenant, nous allons réorganiser le tableau, c'est-à-dire

arr[0] = 0(present in an array)
arr[1] = 1(present in an array)
arr[2] = 2(present in an array)
arr[3] = 3(present in an array)
arr[4] = 4(present in an array)
arr[5] = 5(present in an array)
arr[6] = -1(NOT present in an array)
arr[7] = -1(NOT present in an array)
Copier après la connexion

input− int arr[] = {1, 2, 6, 9, 10}

output− réorganiser le tableau de telle sorte que arr[i] = i soit : -1 1 2 -1 -1

Explication− Nous obtenons un tableau entier de taille 5, et tous les éléments du tableau ont des valeurs inférieures ou supérieures à 5. Maintenant, nous allons réorganiser le tableau, c'est-à-dire

arr[0] = -1(NOT present in an array)
arr[1] = 1(present in an array)
arr[2] = 2(present in an array)
arr[3] = -1(NOT present in an array)
arr[4] = -1(NOT present in an array)
Copier après la connexion

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

  • Entrez un tableau de type entier et calculez la taille du tableau.

  • Imprimez le tableau avant de trier et appelez la fonction Réarranger(arr, taille)

  • À l'intérieur de la fonction Réarranger(arr, taille)

    • déclarer une variable de type entier, disons ptr

    • from Commencez à boucler de i à 0 jusqu'à ce que i soit inférieur à la taille. À l’intérieur de la boucle, une autre boucle commence de j à 0 jusqu’à ce que j soit inférieur à la taille.

    • À l'intérieur de la boucle, vérifiez si arr[j] = i, puis définissez ptr = arr[j], arr[j] = arr[i], arr[i] = ptr et sortez de la boucle.

    • Démarrez la boucle de i à la taille. À l'intérieur de la boucle, vérifiez si arr[i]! = i, puis définissez arr[i] sur -1.

  • Imprimez le tableau après avoir réorganisé les valeurs du tableau.

Exemple

#include <iostream>
using namespace std;
void Rearranging(int arr[], int size){
   int ptr;
   for(int i = 0; i < size; i++){
      for(int j = 0; j < size; j++){
         if(arr[j] == i){
            ptr = arr[j];
            arr[j] = arr[i];
            arr[i] = ptr;
            break;
         }
      }
   }
   for(int i = 0; i < size; i++){
      if(arr[i] != i){
         arr[i] = -1;
      }
   }
}
int main(){
   int arr[] = {0, 8, 1, 5, 4, 3, 2, 9 };
   int size = sizeof(arr) / sizeof(arr[0]);
   //calling the function to rearrange an array such that arr[i] = i
   Rearranging(arr, size);
   //Printing the array
   cout<<"Rearrangement of an array such that arr[i] = i is: ";
   for(int i = 0; i < size; i++){
      cout << arr[i] << " ";
   }
}
Copier après la connexion

Output

Si nous exécutons le code ci-dessus, il générera la sortie suivante

Rearrangement of an array such that arr[i] = i is: 0 1 2 3 4 5 -1 -1
Copier après la connexion

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 de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal