/ / Belsortering van eendimensionale array: algoritme, C-programmacode

Belsortering van eendimensionale array: algoritme, programmacode in C-taal

In het werken met informatie het meest winstgevendmanieren om het op te slaan zijn structuren en matrices. Deze laatste kan elk type gegevens bevatten, wat handig is om te gebruiken in het werk van het programma. Ze worden vaak gebruikt in het werk van online winkels en in de ontwikkeling van games. Daarom worden de gegevens die ze bevatten herhaaldelijk gesorteerd en uitgewisseld en worden er logische of wiskundige bewerkingen op uitgevoerd. Een manier om orde in de array te brengen, is bellen sorteren. Deze publicatie bestudeert de C-code en de logica van permutaties.

Array-sorteeralgoritme

Technische problemen voor de programmeurbellen sorteren van een eendimensionale array vertegenwoordigt niet, hoewel het vrij zeldzaam wordt gebruikt vanwege zijn lage efficiëntie. In de trainingsfase wordt het vaker als de eenvoudigste beschouwd. Het is echter verre van het meest effectief. Het algoritme bestaat uit het afwisselend vergelijken van de cijfers en wederzijds overschrijven van cellen als aan de voorwaarde is voldaan.

bellen sorteren

Stapsgewijze sorteerbeschrijving

Bij de eerste iteratie, tweeaangrenzende nummers. Als de linkerkant groter is, wordt deze op plaatsen met de juiste herschreven. Min 8 en 0 voldoen niet aan de voorwaarden. Dat is waarom ze op plaatsen niet veranderen. Nul en 5 passen ook niet. 5 en 3 zijn geschikt. Bij deze iteratie valt het leeskader echter niet in de top vijf, maar verschuift naar rechts, aangezien 5 voordat dit werd vergeleken met nul. Dit betekent dat het volgende paar - 3 en 9 van plaats veranderen.Dan wordt de lezer aangeboden om alle substituties onafhankelijk te bekijken zonder de opmerkingen van de auteur en om het algoritme van bellen sorteren te bestuderen.

bellen-sorteeralgoritme

Als gevolg van alle iteraties wordt de array geleidelijkis gesorteerd, en dit is in feite het geval: grote positieve getallen bewegen snel naar rechts, terwijl kleinere en negatieve langzaam naar links worden verschoven. Het lijkt erop dat er snel bellen van gas in een vloeistof opstaan. Vanwege deze analogie werd het algoritme bubble-sorteren genoemd.

Schatting van de computationele complexiteit

Het ideale sorteeralgoritme zou moeten zijnzo snel mogelijk. Tegelijkertijd zou het een kleine hoeveelheid CPU- en geheugenbronnen in beslag moeten nemen. En zo'n proces als bellenreeksen van een array kan niet de meest energie-efficiënte en winstgevende zijn. Vanwege de brede toepassing, vond hij niet. Als er op dit moment minder geheugenproblemen zijn, moeten de processorbronnen ongerust zijn. Aangezien digitale arrays niet alleen groot maar ook enorm kunnen zijn, is het gebruik van computerbronnen onvoorspelbaar.

Als bellen sorteren in principe snel isomgaat met het opstellen van orde in een relatief kleine reeks, en vervolgens in het algemeen kunnen er fouten zijn als gevolg van overbesteding van middelen. Dit betekent dat de universaliteitseigenschap die inherent is aan het algoritme wordt geschonden. En het sorteren met een bel heeft een N-vierkantige complexiteit en ligt ver van de logaritme van de N-complexiteit. Bovendien vergroot het risico op falen bij het verwerken van een grote array de kans op gegevensverlies als gevolg van het overschrijven van cellen. Veel winstgevender in dit opzicht zal de invoegsortering of het Shell-algoritme zijn.

Software code

Het volgende is in de grafische toepassingcomputercode voor de C-taal stelt u in staat om bellen te sorteren. Het wordt gerenderd als een afzonderlijke functie van het type ongeldig. Het retourneert geen waarden, maar het gebruik van pointers wisselt de elementen om naargelang de sorteervoorwaarden. In dit geval lost de code het probleem op van bubbelsortering van een array van gehele getallen in stijgende volgorde.

bellen-sorteeralgoritme

Voor deze functie moet de gebruikermaak een array die moet worden gevuld met de gewenste waarden. Dit kan handmatig worden gedaan door de dimensie en het aantal elementen aan het begin van het programma in te stellen. Vervolgens kunt u de array vullen met constante waarden. De tweede optie is om een ​​universeel programma te maken door een grote eendimensionale array van 100 elementen te declareren.

Een array declareren en initialiseren

Een integer-variabele toewijzen en toewijzenDe waarde die van het toetsenbord wordt gelezen, kan het aantal cellen dat wordt gevuld beperken. U kunt ook de functie implementeren van het invoeren van elementen van een array door de gebruiker vanaf het toetsenbord, met behulp van de scanf-functie ("% d", & waarde). In dit voorbeeld is "% d" een wijzigende tekenreeks die de compiler vertelt dat na de scan een geheel getal wordt ontvangen. De variabele waarde slaat een waarde op die de grootte heeft van een eendimensionaal geheel getal.

Om het sorteeralgoritme te gebruiken, zou u dit moeten doenom in de functie de naam van de array en de grootte ervan door te geven. In de situatie die wordt weergegeven in de grafische toepassing ziet de aanroep van de sorteerfunctie er als volgt uit: BubleSort (dataArray, sizeDataArray). Uiteraard moet u aan het einde van de regel na de functie een puntkomma in plaats van een punt zetten, zoals vereist door de syntaxisregels van het programma. DataArray is dus de naam van de array die u wilt sorteren en sizeDataArray is de grootte.

bubble array-sortering

Deze parameters doorgeven aan de functie BubleSort ()zal resulteren in dat in plaats van het gebruik van sizeArray, zoals u in de afbeelding kunt zien, in een echt programma de bewerkingen met sizeDataArray worden uitgevoerd. Dit betekent ook dat de functie BubleSort () een integer-gegevensarray gebruikt. Op dezelfde manier worden de functie printArrayFunction () en ArrayIntegerInputFunction () aangeroepen. De eerste is verantwoordelijk voor het afdrukken, dat wil zeggen voor de uitvoer naar de console van de elementen. En de tweede is nodig om het te vullen met elementen die door de gebruiker vanaf het toetsenbord zijn ingevoerd.

Deze programmeerstijl, wanneer geïsoleerdbewerkingen worden uitgevoerd in de vorm van functies, verhogen de leesbaarheid van code aanzienlijk en versnellen de ontwikkeling ervan. In een dergelijk programma wordt de array apart van het toetsenbord ingevuld, uitgeprint en de bubbelsortering zelf. Dit laatste kan worden gebruikt om de gegevens te organiseren of als een secundaire functie die is ontworpen om het minimum en het maximum van de array te vinden.

Invoegsortering

Bij sorteren op de invoegmethodeafwisselend elk element vergelijken en een reeks items samenstellen die al volgens de voorwaarde zijn gesorteerd. Als gevolg hiervan is het resultaat van elke volgende vergelijking het zoeken naar een cel waarin een nieuwe waarde kan worden geplaatst. Maar de invoeging van elk ervan wordt uitgevoerd in het reeds gesorteerde deel van de array.

bubbel soort inzetstukken

Een dergelijke verwerking is sneller en heeft minder computationele complexiteit. De C-code wordt gepresenteerd in de grafische applicatie.

uitvoeren van bellen sorteren

Het wordt ook weergegeven in de vorm van een functie waarinAls argumenten worden de naam van de array die moet worden geordend en de grootte van de array overgedragen. Hier kun je zien hoe traag de bubbelsoort is. Voegt soortgelijk werk in is veel sneller en heeft een compacte code.

Lees meer: