Heim >Backend-Entwicklung >C++ >Minimieren Sie den Unterschied zwischen den größten und kleinsten Elementen, indem Sie die Array-Elemente um 1 verringern und erhöhen

Minimieren Sie den Unterschied zwischen den größten und kleinsten Elementen, indem Sie die Array-Elemente um 1 verringern und erhöhen

PHPz
PHPznach vorne
2023-09-10 10:37:02678Durchsuche

通过将数组元素减少和增加 1 来最小化最大元素和最小元素之间的差异

Für C++-Programmierer kann es nützlich sein, die Lücke zwischen der maximalen und minimalen Anzahl von Elementen in einem Array zu verringern. Dies fördert eine gleichmäßige Wertverteilung über alle seine Elemente, was möglicherweise in mehreren Situationen zu mehreren Vorteilen führt. Unser aktueller Schwerpunkt liegt auf Methoden zur Optimierung des Gleichgewichts innerhalb einer Array-Struktur durch praktische Techniken zur Vergrößerung oder Verkleinerung der Array-Struktur.

Grammatik

Bevor wir uns mit den Details des Algorithmus befassen, untersuchen wir zunächst kurz die Syntax der im anschaulichen Codebeispiel verwendeten Methoden -

void minimizeDifference(int arr[], int n);
Die Funktion „minimumDifference“ verwendet das Array arr und seine Größe n als Parameter.

Algorithmus

Um die Lücke zwischen den Maximal- und Minimalwerten des Arrays zu verringern, befolgen Sie die folgenden aufeinanderfolgenden Anweisungen -

  • Um den höchsten und niedrigsten Wert in einem bestimmten Element zu bestimmen, muss jeder Wert ermittelt und miteinander verglichen werden.

  • Berechnen Sie die Differenz zwischen dem größten und dem kleinsten Element.

  • Teilen Sie die Differenz durch 2 und speichern Sie sie in einer Variablen namens midDiff.

  • Durchlaufen Sie das Array und führen Sie die folgenden Schritte für jedes Element aus -

  • Wenn das Element größer als der Durchschnitt der größten und kleinsten Elemente ist, subtrahieren Sie midDiff davon.

  • Wenn das Element kleiner als der Mittelwert ist, erhöhen Sie es um midDiff.

  • Unser Ziel erfordert, dass wir uns an die Anwendungsmethodik halten und die Schritte 1 bis 4 ohne Unterbrechung wiederholen, bis wir einen Zustand erreichen, in dem die Ober- und Untergrenze um nicht mehr als eine Einheit konvergieren oder abweichen.

Methode

Lassen Sie uns nun zwei verschiedene Möglichkeiten besprechen, um den Unterschied zwischen dem größten und dem kleinsten Element in einem Array zu minimieren −

Methode 1: Naive Methode

Ein Ansatz für Personen, die mit diesem Problem nicht vertraut sind, könnte darin bestehen, den Algorithmus wiederholt auszuführen, bis nur noch eine Differenzeinheit zwischen dem größten und dem kleinsten Element besteht. So können Sie diese Lösung programmgesteuert implementieren -

Grammatik

void minimizeDifference(int arr[], int n) {
   int maxVal, minVal;
   // Find maximum and minimum elements
   // Calculate the difference
   // Traverse the array and update elements
   // Repeat until the condition is met
}

Beispiel

#include <iostream>
#include <algorithm>

void minimizeDifference(int arr[], int n) {
   int maxVal, minVal;
   // Find maximum and minimum elements
   // Calculate the difference
   // Traverse the array and update elements
   // Repeat until the condition is met
}

int main() {
   int arr[] = {5, 9, 2, 10, 3};
   int n = sizeof(arr) / sizeof(arr[0]);

   minimizeDifference(arr, n);

   // Print the modified array
   for (int i = 0; i < n; i++) {
      std::cout << arr[i] << " ";
   }

   return 0;
}

Ausgabe

5 9 2 10 3
Die chinesische Übersetzung von

Erklärung

lautet:

Erklärung

Die naive Methode – auch als Methode 1 bekannt – zielt darauf ab, den Unterschied zwischen Elementen im Array zu minimieren, indem der Unterschied zwischen den größten und kleinsten Elementen verringert wird. Die Umsetzung dieser Strategie erfordert die folgenden Schritte: Zuerst bestimmen wir, welches Element im Originaldatensatz als Maximalwert dient, und ermitteln gleichzeitig, welches andere Element den Minimalwert darstellt. Diese Datensätze werden als Nächstes in einer Array-Struktur gespeichert Wir berechnen die Entfernung dieser niedrigsten und höchsten Entitäten aus einem statistisch gesteuerten Datensatz. In der dritten Stufe ist der Zugriff auf jedes Element im Datensatz erforderlich, um sie mithilfe spezifischer Bedingungen zu aktualisieren, die vom Algorithmus vorgegeben werden und mit denen jeder einzelne Eintrag verglichen wird der zuvor gefundene statistische Mittelwert. Differenz zwischen (mathematischem Mittelwert) (extrem höchste/niedrigste Paare, die in Schritt I angegeben wurden) oder einem kleineren/größeren Bereich von Fällen, die neu skaliert werden müssen, wobei sie in unterschiedlichen Proportionen abnehmen oder ansteigen müssen, bis ein optimales Gleichgewicht erreicht ist – d. h. das größte/kleinste Einheiten kommen sich am nächsten, ohne einander zu übertreffen.

Methode 2: Sortiermethode

Das Sortieren des Arrays in absteigender Reihenfolge vor dem Durchlaufen des Arrays von beiden Enden kann als eine weitere Möglichkeit zur Lösung dieses Problems angesehen werden. Durch abwechselndes Verkleinern und Erhöhen der Größe können wir unsere Output-Strategie optimieren. Die folgende Implementierung demonstriert diese Schritte durch Code -

Grammatik

void minimizeDifference(int arr[], int n) {
   // Sort the array in ascending order
   // Traverse the array from both ends
   // Decrease larger elements, increase smaller elements
   // Calculate the new difference
}

Beispiel

#include <iostream>
#include <algorithm>

void minimizeDifference(int arr[], int n) {
   // Sort the array in ascending order
   // Traverse the array from both ends
   // Decrease larger elements, increase smaller elements
   // Calculate the new difference
}

int main() {
   int arr[] = {5, 9, 2, 10, 3};
   int n = sizeof(arr) / sizeof(arr[0]);

   minimizeDifference(arr, n);

   // Print the modified array
   for (int i = 0; i < n; i++) {
      std::cout << arr[i] << " ";
   }

   return 0;
}

Ausgabe

5 9 2 10 3
Die chinesische Übersetzung von

Erklärung

lautet:

Erklärung

Um den Unterschied zwischen dem größten und dem kleinsten Wert im Array zu minimieren, kann Ansatz 2 verwendet werden – oft als Sortieren bezeichnet. Um diesem Ansatz zu folgen, müssen Sie zunächst jedes Element in der Sammlung in aufsteigender Reihenfolge organisieren. Beginnen Sie als Nächstes damit, beide Enden des Satzes gleichzeitig zu durchlaufen, wobei Sie kleinere Elemente vergrößern und gleichzeitig größere Elemente verkleinern, bis Sie den Mittelpunkt erreichen. Dadurch werden die Maximal- und Minimalwerte näher zusammengebracht, um eine bessere räumliche Konsistenz zwischen den Parametern entsprechend ihren jeweiligen Größen zu erreichen, mit hoher Genauigkeit bei der Messung neu entdeckter Unterschiede nach der Operation.

Fazit

Unser Ziel mit diesem Artikel ist es, einen algorithmusgesteuerten Ansatz zu diskutieren, der sich darauf konzentriert, die Differenz zwischen dem höchsten und dem niedrigsten Wert eines Bereichs zu verringern, indem kleinere Einheiten innerhalb des Bereichs priorisiert werden. In unserer Untersuchung schlagen wir zwei verschiedene Strategien vor: die naive Strategie und die Sortierstrategie, und stellen den Lesern anhand von funktionalem Beispielcode reale Anwendungsfälle zur Verfügung, wie sich beide Strategien am besten anwenden lassen, sind aber nicht darauf beschränkt. Durch die Verwendung dieser Strategien können wir die Anzahl der Elemente im Array effizient verwalten, um das beste Preis-Leistungs-Verhältnis zu erzielen. Bedenken Sie bei der Implementierung, dass die Anpassung an bestimmte Projektziele bei der Durchführung verschiedener Konfigurationen von entscheidender Bedeutung ist

Das obige ist der detaillierte Inhalt vonMinimieren Sie den Unterschied zwischen den größten und kleinsten Elementen, indem Sie die Array-Elemente um 1 verringern und erhöhen. 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