C++-Programm: Array-Elemente in aufsteigender Reihenfolge sortieren

PHPz
Freigeben: 2023-09-13 08:49:02
nach vorne
1175 Leute haben es durchsucht

C++-Programm: Array-Elemente in aufsteigender Reihenfolge sortieren

Um einige Probleme effektiv zu lösen, ist es sehr wichtig, die Datenelemente an der richtigen Position anzuordnen Befehl. Eines der beliebtesten Permutationsprobleme ist das Problem der Elementreihenfolge. Das In diesem Artikel wird gezeigt, wie Array-Mitglieder in aufsteigender Reihenfolge sortiert werden (gemäß der Wert steigt weiter).

Um numerische oder nicht numerische Elemente in einer bestimmten Reihenfolge anzuordnen, gibt es viele Möglichkeiten In diesem Bereich können Sortieralgorithmen eingesetzt werden. Nur zwei einfache Sortiertechniken wird in diesem Artikel vorgestellt. Auswahlsortierung und Blasensortierung. Lassen Sie uns sie einzeln überprüfen Implementieren Sie Code individuell mit geeigneter Technologie und C++.

Array mithilfe der Blasensortiertechnik in aufsteigender Reihenfolge sortieren

Eine der beliebtesten und unkompliziertesten Methoden zum Sortieren von Array-Komponenten ist Blasensortiermethode. Bei dieser Methode werden zwei Elemente nacheinander überprüft Überprüfen Sie, ob sie in der richtigen Reihenfolge sind. Wenn nicht, tauscht die Methode Elemente aus, bis sie vorhanden sind Die Reihenfolge ist korrekt. Gehen Sie danach nach rechts und wiederholen Sie den Vorgang mit der anderen Gruppe Werte. Einzelne Elemente werden am Ende an der richtigen erwarteten Position platziert Jede der mehreren Stufen der Blasensortiertechnologie. Schauen Sie sich die Blasensortierung an Algorithmus.

Algorithmus

  • Array A und seine Größe n als Eingabe lesen
  • Für i im Bereich von 0 bis n-1 führen Sie aus
    • Für j im Bereich von 0 bis n - 2 gilt Folgendes:
      • Wenn A[j] > A[j + 1], dann
        • Vertauschen Sie A[j] und A[j + 1]
      • Wenn es endet
    • Ende
  • Ende

Beispiel

#include  using namespace std; void display( int arr[], int n ){ for ( int i = 0; i < n; i++ ) { cout << arr[i] << ", "; } } void swap ( int &a, int &b ){ int temp = a; a = b; b = temp; } void solve( int arr[], int n ){ int i, j; for ( i = 0; i < n; i++ ) { for ( j = 0; j < n-1; j++ ) { if ( arr[j] > arr[ j+1 ] ) { swap( arr[j], arr[ j + 1 ] ); } } } } int main(){ int arr[] = {8, 45, 74, 12, 10, 36, 58, 96, 5, 2, 78, 44, 25, 12, 89, 95, 63, 84}; int n = sizeof( arr ) / sizeof( arr[0] ); cout << "Array before sorting: "; display(arr, n); solve( arr, n ); cout << "\nArray After sorting: "; display(arr, n); }
Nach dem Login kopieren

Ausgabe

Array before sorting: 8, 45, 74, 12, 10, 36, 58, 96, 5, 2, 78, 44, 25, 12, 89, 95, 63, 84, Array After sorting: 2, 5, 8, 10, 12, 12, 25, 36, 44, 45, 58, 63, 74, 78, 84, 89, 95, 96,
Nach dem Login kopieren
Nach dem Login kopieren

Array mithilfe der Auswahlsortiertechnik in aufsteigender Reihenfolge sortieren

Bei Verwendung der Auswahlsortierstrategie beginnen wir mit Index I und gehen bis zum Ende Finden Sie bei einem gegebenen Array das minimale oder maximale Element. Angenommen, wir sind es Zeigen Sie jede Zutat auf. Es lokalisiert das kleinste Element vom Index I bis zum Ende Platzieren Sie in jeder Phase die Elemente und wiederholen Sie den Vorgang Finden Sie das nächstgrößere Element aus Index I + 1 usw. Diese Phasen stehen kurz vor dem Abschluss, Dann wird das gesamte Array entsprechend sortiert.

Algorithmus

  • Array A und seine Größe n als Eingabe lesen
  • Für i im Bereich von 0 bis n-1 führen Sie aus
    • ind := kleinster Elementindex von i bis n in A
    • Wenn A[ i ] > A[ ind ], dann
      • Tausch A[ i ] und A[ ind ]
    • Wenn es endet
  • Ende

Beispiel

#include  using namespace std; void display( int arr[], int n ){ for ( int i = 0; i < n; i++ ) { cout << arr[i] << ", "; } } void swap ( int &a, int &b ){ int temp = a; a = b; b = temp; } int min_index( int arr[], int n, int s, int e ){ int min = 99999, min_ind = -1; for ( int i = s; i < e; i++ ) { if ( arr[i] < min ) { min = arr[i]; min_ind = i; } } return min_ind; } void solve( int arr[], int n ){ int i, j, ind; for ( i = 0; i < n; i++ ) { ind = min_index( arr, n, i, n ); if ( arr[i] > arr[ ind ] ) { swap( arr[i], arr[ ind ] ); } } } int main(){ int arr[] = {8, 45, 74, 12, 10, 36, 58, 96, 5, 2, 78, 44, 25, 12, 89, 95, 63, 84}; int n = sizeof( arr ) / sizeof( arr[0] ); cout << "Array before sorting: "; display(arr, n); solve( arr, n ); cout << "\nArray After sorting: "; display(arr, n); }
Nach dem Login kopieren

Ausgabe

Array before sorting: 8, 45, 74, 12, 10, 36, 58, 96, 5, 2, 78, 44, 25, 12, 89, 95, 63, 84, Array After sorting: 2, 5, 8, 10, 12, 12, 25, 36, 44, 45, 58, 63, 74, 78, 84, 89, 95, 96,
Nach dem Login kopieren
Nach dem Login kopieren

Fazit

Ein Grundproblem ist das Sortieren, bei dem es darum geht, Zahlen oder andere Gegenstände der Reihenfolge nach anzuordnen Vorgegebene Layout-Logik. Es gibt viele andere Sequenzierungstechniken in diesem Bereich, In diesem Artikel konzentrieren wir uns jedoch auf zwei, die einfach zu verwenden und zu verstehen sind. diese beiden Zu den Sortiertechniken gehören die Auswahlsortiertechnik und die Blasensortiertechnik. wir haben Verwenden Sie diese beiden Techniken, um den Datensatz in aufsteigender (nicht absteigender) Reihenfolge anzuordnen. Diese beiden Sortiertechniken sind zwar nicht sehr zeiteffizient, aber einfach. beide Beide Techniken erfordern einen Zeitaufwand von O(n2), wobei n ist eingeben. Solange beurteilt wird, ob eine Änderung stattgefunden hat, wird es in den nachfolgenden Phasen keine Änderung geben Es findet zu keinem Zeitpunkt ein Austausch statt, wodurch die Blasensortierung schneller erfolgt.

Das obige ist der detaillierte Inhalt vonC++-Programm: Array-Elemente in aufsteigender Reihenfolge sortieren. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:tutorialspoint.com
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn