Maison > développement back-end > C++ > Réorganiser l'ordre du tableau à l'aide de C++ : valeur minimale, valeur maximale, deuxième valeur minimale, deuxième valeur maximale

Réorganiser l'ordre du tableau à l'aide de C++ : valeur minimale, valeur maximale, deuxième valeur minimale, deuxième valeur maximale

王林
Libérer: 2023-09-11 22:29:02
avant
903 Les gens l'ont consulté

使用C++重新排列数组顺序 - 最小值、最大值、第二小值、第二大值

Nous obtenons un tableau ; nous devons organiser ce tableau dans l'ordre suivant : le premier élément doit être le plus petit élément, le deuxième élément doit être le plus grand élément, le troisième élément doit être le deuxième plus petit élément et le le quatrième élément doit être le deuxième plus grand élément et ainsi de suite Exemple -

Input : arr[ ] = { 13, 34, 30, 56, 78, 3 }
Output : { 3, 78, 13, 56, 34, 30 }
Explanation : array is rearranged in the order { 1st min, 1st max, 2nd min, 2nd max, 3rd min, 3rd max }

Input : arr [ ] = { 2, 4, 6, 8, 11, 13, 15 }
Output : { 2, 15, 4, 13, 6, 11, 8 }
Copier après la connexion

Façons de trouver la solution

Vous pouvez utiliser deux variables "x" et "y" pour déterminer où elles pointent vers l'élément maximum et minimum , mais pour ce tableau, il doit être trié, nous devons donc d'abord trier le tableau, puis créer un nouveau tableau vide de la même taille pour stocker le tableau réorganisé. Parcourez maintenant le tableau et si l'élément itéré est à un index pair, ajoutez l'élément arr[ x ] au tableau vide et incrémentez x de 1. Si l'élément a un index impair, ajoutez l'élément arr[ y ] au tableau vide et décrémentez y de 1. Faites cela jusqu'à ce que y devienne plus petit que x.

Exemple

#include <bits/stdc++.h>
using namespace std;
int main () {
   int arr[] = { 2, 4, 6, 8, 11, 13, 15 };
   int n = sizeof (arr) / sizeof (arr[0]);

   // creating a new array to store the rearranged array.
   int reordered_array[n];

   // sorting the original array
   sort(arr, arr + n);

   // pointing variables to minimum and maximum element index.
   int x = 0, y = n - 1;
   int i = 0;

   // iterating over the array until max is less than or equals to max.
   while (x <= y) {
   // if i is even then store max index element

      if (i % 2 == 0) {
         reordered_array[i] = arr[x];
         x++;
      }
      // store min index element
      else {
         reordered_array[i] = arr[y];
         y--;
      }
      i++;
   }
   // printing the reordered array.
   for (int i = 0; i < n; i++)
      cout << reordered_array[i] << " ";

   // or we can update the original array
   // for (int i = 0; i < n; i++)
   // arr[i] = reordered_array[i];
   return 0;
}
Copier après la connexion

Sortie

2 15 4 13 6 11 8
Copier après la connexion

La description du code ci-dessus

  • les variables sont initialisées à x=0 et y = array_length(n) - 1.
  • while( x<=y) parcourt le tableau jusqu'à ce que x soit supérieur à y.
  • Si le nombre est pair (x), alors l'élément est ajouté au tableau final et la variable x est incrémentée de 1.
  • Si i est un nombre impair, (y) cet élément est ajouté au tableau final et la variable y est décrémentée de 1.
  • Enfin, stockez le tableau réorganisé dans reordered_array[].

Conclusion

Dans cet article, nous avons discuté de la solution pour réorganiser le tableau donné sous forme min, max. Nous avons également écrit un programme C++ pour cela. De même, nous pouvons écrire ce programme dans n'importe quel autre langage comme C, Java, Python, etc. Nous espérons que cet article vous a été utile.

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