Heim > Backend-Entwicklung > C++ > C-Programm zur rekursiven Blasensortierung

C-Programm zur rekursiven Blasensortierung

WBOY
Freigeben: 2023-09-15 20:49:02
nach vorne
1214 Leute haben es durchsucht

C-Programm zur rekursiven Blasensortierung

Bubble Sort ist einer der einfachsten Sortieralgorithmen, der zum Sortieren von Daten durch Vergleich benachbarter Elemente verwendet wird. Alle Elemente werden stufenweise verglichen. In der ersten Stufe wird der größte Wert am Ende platziert, in der zweiten Stufe wird das zweitgrößte Element an der vorletzten Position platziert und so weiter, bis die vollständige Liste sortiert ist.

Blasensortierungsalgorithmus

  • int arr[5]= { 5,4,2,1,3 };

  • int i, j ;

  • Traverse vom Index i=0 zum i

    • Durchlauf vom Index j=0 zur Array-Größe - i - 1

    • If arr[i]>arr[j] Tausche arr[i] mit arr[j]

  • Ende

Rekursive Blasensortierung

  • Wenn die Array-Länge 1 ist, geben Sie zurück

  • Durchlaufen Sie das Array einmal und legen Sie das maximale Element am Ende fest​​p>

  • Der Rest der Schritte wird bis auf den letzten rekursiv ausgeführt Elementarray

Beispiel

Eingabe − Arr[] = {5,7,2,3, 1,4}; Länge=6

Ausgabe − Sortiertes Array: 1 2 3 4 5 7

Beschreibung

First Pass
5 7 2 3 1 4 → swap → 5 2 7 3 1 4
5 2 7 3 1 4 → swap → 5 2 3 7 1 4
5 2 3 7 1 4 → swap → 5 2 3 1 7 4
5 2 3 1 7 4 → swap → 5 2 3 1 4 7
Second Pass
5 2 3 1 4 7 → swap → 2 5 3 1 4 7
2 5 3 1 4 7 → swap → 2 3 5 1 4 7
2 3 5 1 4 7 → swap → 2 3 1 5 4 7
2 3 1 5 4 7 → swap → 2 3 1 4 5 7
Third Pass
2 3 1 4 5 7 → swap → 2 1 3 4 5 7
2 1 3 4 5 7 no swap
Fourth Pass
2 1 3 4 5 7 → swap → 1 2 3 4 5 7
1 2 3 4 5 7 no swap in further iterations
Nach dem Login kopieren

Eingabe− Arr[] = { 1, 2, 3, 3, 2 };

Ausgabe− Sortiertes Array: 1 2 2 3 3

Beschreibung -

r reee

Die im folgenden Programm verwendete Methode lautet wie folgt:

Bei der rekursiven Methode der Blasensortierung ist die Grundsituation Array-Länge = 1. Andernfalls verwenden Sie eine einzelne for-Schleife, um das Array zu durchlaufen und die Elemente entsprechend auszutauschen. < /p>

  • Nehmen Sie das Eingabearray Arr[] und die Länge als Anzahl der darin enthaltenen Elemente.

  • Die Funktion recurbublSort(int arr[], int len) ruft das Array und seine Länge ab und verwendet Bubble Sort, um das Array rekursiv zu sortieren.

  • Erhalten Sie die variable Temperatur.

  • < li>

    Wenn die Array-Länge 1 ist, wird void zurückgegeben.

  • Andernfalls verwenden Sie eine einzelne for-Schleife, um das Array zu durchlaufen und für jedes Element arr[i]>arr[i+1] die Elemente auszutauschen.

  • Setze temp=arr[i], arr[i]=arr[i+1] und arr[i+1]=temp. < /p>

  • Verringern Sie nun die Länge um 1, da in der vorherigen Schleife das größte Element an der letzten Position platziert wurde.

  • Rekursiv recurbublSort(arr,len) aufrufen.

  • Am Ende aller Aufrufe, wenn len 1 wird, beenden wir die Rekursion und sortieren das Array.

    < /li>
  • Drucken Sie das sortierte Array in main.

Beispiel

First Pass
1 2 3 3 2 &rarr; swap &rarr; 1 2 3 2 3
1 2 3 2 3 &rarr; swap &rarr; 1 2 2 3 3
1 2 2 3 3 no swap in further iterations
Second Pass
1 2 2 3 3 no swap in further iterations
Nach dem Login kopieren

Ausgabe

Wenn wir den obigen Code ausführen, wird die folgende Ausgabe generiert

#include <stdio.h>
void recurbublSort(int arr[], int len){
   int temp;

   if (len == 1){
      return;
   }
   for (int i=0; i<len-1; i++){
      if (arr[i] > arr[i+1]){
         temp=arr[i];
         arr[i]=arr[i+1];
         arr[i+1]=temp;
      }
   }
   len=len-1;
   recurbublSort(arr, len);
}
int main(){
   int Arr[] = {21, 34, 20, 31, 78, 43, 66};
   int length = sizeof(Arr)/sizeof(Arr[0]);

   recurbublSort(Arr, length);

   printf("Sorted array : ");
   for(int i=0;i<length;i++){
      printf("%d ",Arr[i]);
   }

   return 0;
}
Nach dem Login kopieren

Das obige ist der detaillierte Inhalt vonC-Programm zur rekursiven Blasensortierung. 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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage