Heim >Backend-Entwicklung >C++ >Ordnen Sie die Array-Reihenfolge mit C++ neu – Minimalwert, Maximalwert, zweiter Minimalwert, zweiter Maximalwert

Ordnen Sie die Array-Reihenfolge mit C++ neu – Minimalwert, Maximalwert, zweiter Minimalwert, zweiter Maximalwert

王林
王林nach vorne
2023-09-11 22:29:02866Durchsuche

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

Wir erhalten ein Array; wir müssen dieses Array in der folgenden Reihenfolge anordnen: Das erste Element sollte das kleinste Element sein, das zweite Element sollte das größte Element sein, das dritte Element sollte das zweitkleinste Element sein und das Das vierte Element sollte das zweitgrößte Element sein und so weiter. Beispiel –

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 }

Möglichkeiten, die Lösung zu finden

Sie können zwei Variablen „x“ und „y“ verwenden, um zu lösen, wo sie auf das maximale und minimale Element zeigen , aber dafür sollte das Array sortiert sein, also müssen wir zuerst das Array sortieren und dann ein neues leeres Array derselben Größe erstellen, um das neu geordnete Array zu speichern. Nun iterieren Sie über das Array und wenn das iterierte Element einen geraden Index hat, fügen Sie das Element arr[ x ] zum leeren Array hinzu und erhöhen Sie x um 1. Wenn das Element einen ungeraden Index hat, fügen Sie das Element arr[ y ] zum leeren Array hinzu und dekrementieren y um 1. Tun Sie dies, bis y kleiner als x wird.

Beispiel

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

Ausgabe

2 15 4 13 6 11 8

Die Variablen der obigen Codebeschreibung

  • werden auf x=0 und y = array_length(n) - 1 initialisiert.
  • while( x<=y) durchläuft das Array, bis x größer als y ist.
  • Wenn die Anzahl gerade (x) ist, wird das Element zum endgültigen Array hinzugefügt und die Variable x wird um 1 erhöht.
  • Wenn i eine ungerade Zahl ist, wird (y) dieses Element zum endgültigen Array hinzugefügt und die Variable y wird um 1 dekrementiert.
  • Speichern Sie abschließend das neu geordnete Array in reordered_array[].

Fazit

In diesem Artikel haben wir die Lösung besprochen, das gegebene Array in der Min-Max-Form neu anzuordnen. Auch hierfür haben wir ein C++-Programm geschrieben. Ebenso können wir dieses Programm in jeder anderen Sprache wie C, Java, Python usw. schreiben. Wir hoffen, dass dieser Artikel für Sie hilfreich war.

Das obige ist der detaillierte Inhalt vonOrdnen Sie die Array-Reihenfolge mit C++ neu – Minimalwert, Maximalwert, zweiter Minimalwert, zweiter Maximalwert. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:tutorialspoint.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen