/ / Blasensortierung eines eindimensionalen Arrays: Algorithmus, C-Programmcode

Blasensortierung eines eindimensionalen Arrays: Algorithmus, Programmcode in C-Sprache

In der Arbeit mit Informationen am profitabelstenSpeichermöglichkeiten sind Strukturen und Arrays. Letzteres kann beliebige Daten eines Typs enthalten, die im Programm bequem zu verwenden sind. Sie werden oft in der Arbeit von Online-Shops und in der Entwicklung von Spielen verwendet. Daher werden die darin enthaltenen Daten wiederholt sortiert und vertauscht, und an ihnen werden logische oder mathematische Operationen ausgeführt. Eine Möglichkeit, Ordnung in das Array zu bringen, ist die Blasensortierung. Diese Publikation wird ihren C-Code und die Logik von Permutationen untersuchen.

Array-Sortieralgorithmus

Technische Schwierigkeiten für den ProgrammiererBlasensortieren eines eindimensionalen Arrays stellt nicht dar, obwohl es wegen seiner geringen Effizienz ziemlich selten verwendet wird. Es wird häufiger in der Ausbildung als das einfachste betrachtet. Es ist jedoch bei weitem nicht das effektivste. Sein Algorithmus besteht darin, die Ziffern abwechselnd zu vergleichen und Zellen gegenseitig zu überschreiben, wenn die Bedingung erfüllt ist.

Blasensortieren

Schritt-für-Schritt-Sortierung Beschreibung

In der ersten Iteration zweiNachbarzahlen. Wenn die linke Seite größer ist, wird sie an der richtigen Stelle neu geschrieben. Minus 8 und 0 erfüllen die Bedingungen nicht. Deshalb ändern sie sich nicht an einigen Stellen. Null und 5 passen auch nicht. 5 und 3 sind geeignet. Bei dieser Iteration fällt der Leserahmen jedoch nicht auf die oberen fünf, sondern verschiebt sich nach rechts, da 5 davor mit Null verglichen wurde. Das bedeutet, dass das nächste Paar - 3 und 9 - die Plätze wechselt.Dann wird dem Leser angeboten, alle Ersetzungen unabhängig von den Kommentaren des Autors zu überprüfen und den Algorithmus der Blasensortierung zu studieren.

Blasensortieralgorithmus

Als Ergebnis aller Iterationen, das Array allmählichist sortiert, und das ist grundsätzlich der Fall: große positive Zahlen bewegen sich schnell nach rechts, während kleinere und negative langsam nach links verschoben werden. Es sieht aus wie Gasblasen in einer Flüssigkeit schnell aufsteigen. Aufgrund dieser Analogie wurde der Algorithmus Blasensortierung genannt.

Schätzung der Rechenkomplexität

Der ideale Sortieralgorithmus sollte seinso schnell wie möglich. Gleichzeitig sollte es eine kleine Menge an CPU- und Speicherressourcen aufnehmen. Und solch ein Prozess wie eine Blasensortierung eines Arrays kann nicht der energieeffizienteste und profitabelste sein. Wegen der breiten Anwendung hat er nicht gefunden. Wenn es im Moment weniger Probleme mit dem Speicher gibt, sollten die Prozessorressourcen beunruhigt sein. Da digitale Arrays nicht nur groß, sondern auch riesig sein können, ist der Verbrauch von Computerressourcen unvorhersehbar.

Wenn Blasensortieren im Prinzip schnell istfertig mit den Dingen, um in einem relativ kleinen Array kann die größte Grund Überschreitungen von Ressourcen Störungen sein. Dies bedeutet, dass die Universalitätseigenschaft des Algorithmus verletzt wird. Und die Sortierung nach einer Blase hat eine N-Quadrat-Komplexität und ist sehr weit vom Logarithmus der N-Komplexität entfernt. Außerdem erhöht das Risiko eines Fehlers bei der Verarbeitung eines großen Arrays die Wahrscheinlichkeit eines Datenverlusts aufgrund eines Überschreibens von Zellen. Viel profitabler in dieser Hinsicht ist die Einfügesortierung oder der Shell-Algorithmus.

Softwarecode

Das Folgende ist in der grafischen AnwendungComputer-Code für die Sprache C ermöglicht es Ihnen, Blasensortierung durchzuführen. Es wird als separate Funktion vom Typ void gerendert. Es gibt keine Werte zurück, aber die Verwendung von Zeigern vertauscht die Elemente in Abhängigkeit von den Sortierbedingungen. In diesem Fall löst der Code das Problem der Blasensortierung eines Arrays von Ganzzahlen in aufsteigender Reihenfolge.

Blasensortieralgorithmus

Um diese Funktion auszuführen, muss der BenutzerErstellen Sie ein Array, das mit den gewünschten Werten gefüllt werden muss. Dies kann manuell erfolgen, indem die Dimension und die Anzahl der Elemente am Anfang des Programms festgelegt werden. Dann können Sie das Array mit konstanten Werten füllen. Die zweite Option besteht darin, ein universelles Programm zu erstellen, indem ein großes eindimensionales Array von 100 Elementen deklariert wird.

Ein Array deklarieren und initialisieren

Eine Integer-Variable zuweisen und zuweisenDer Wert, der über die Tastatur gelesen wird, kann die Anzahl der Zellen begrenzen, die gefüllt werden. Sie können die Funktion zum Eingeben von Elementen eines Arrays auch vom Benutzer über die Tastatur implementieren, indem Sie die Funktion scanf ("% d", & value) verwenden. In diesem Beispiel ist "% d" eine modifizierende Zeichenfolge, die dem Compiler mitteilt, dass nach dem Scan ein ganzzahliger Wert empfangen wird. Der Variablenwert speichert einen Wert, der die Größe eines eindimensionalen Ganzzahl-Arrays hat.

Um den Sortieralgorithmus zu verwenden, sollten Sieum die Funktion des Namens des Arrays und seiner Größe zu übergeben. In der in der grafischen Anwendung dargestellten Situation sieht der Aufruf der Sortierfunktion folgendermaßen aus: BubleSort (dataArray, sizeDataArray). Natürlich sollten Sie am Ende der Zeile nach der Funktion ein Semikolon anstelle eines Punktes einfügen, wie es die Syntaxregeln des Programms erfordern. Also ist dataArray der Name des Arrays, das Sie sortieren möchten, und sizeDataArray ist seine Größe.

Blasenarraysortierung

Übergeben dieser Parameter an die BubleSort () - FunktionDies führt dazu, dass anstelle von sizeArray, wie Sie in der Abbildung sehen, in einem realen Programm die Operationen mit sizeDataArray ausgeführt werden. Dies bedeutet auch, dass die Funktion BubleSort () eine Ganzzahl dataArray verwendet. In ähnlicher Weise werden die Funktionen printArrayFunction () und ArrayIntegerInputFunction () aufgerufen. Die erste ist verantwortlich für das Drucken, dh für die Ausgabe an die Konsole der Elemente. Und die zweite wird benötigt, um sie mit Elementen zu füllen, die der Benutzer über die Tastatur eingegeben hat.

Diese Art der Programmierung, wenn isoliertOperationen werden in Form von Funktionen ausgeführt, erhöhen deutlich die Lesbarkeit von Code und beschleunigen dessen Entwicklung. In einem solchen Programm wird das Array separat von der Tastatur ausgefüllt, ausgedruckt und die Blase selbst sortiert. Letzteres kann verwendet werden, um die Daten zu organisieren, oder als eine sekundäre Funktion, die dazu bestimmt ist, das Minimum und das Maximum des Arrays zu finden.

Einfügesortierung

Beim Sortieren nach der EinfügemethodeAbwechselndes Vergleichen jedes Elements und Erstellen einer Kette von Elementen, die bereits nach der Bedingung sortiert sind. Folglich ist das Ergebnis jedes nachfolgenden Vergleichs die Suche nach einer Zelle, in die ein neuer Wert gesetzt werden kann. Aber die Einfügung von jedem von ihnen wird in dem bereits sortierten Teil des Arrays durchgeführt.

Blasensortiereinsätze

Eine solche Verarbeitung ist schneller und hat weniger Rechenkomplexität. Der C-Code wird in der grafischen Anwendung dargestellt.

Blasensortierung durchführen

Es wird auch in Form einer Funktion wiedergegeben, in derAls Argumente werden der Name des Arrays, das sortiert werden muss, und die Größe des Arrays übertragen. Hier können Sie sehen, wie langsam die Blasensortierung ist. Fügt ähnliche Arbeit ist viel schneller und hat einen kompakten Code.

Lesen Sie mehr: