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

王林
王林avant
2023-09-11 22:29:02866parcourir

使用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 }

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

Sortie

2 15 4 13 6 11 8

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:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer