ComputersProgrammering

Sorteertechnieken in de programmering: het sorteren van "bubble"

bubble sort wordt niet alleen beschouwd als de snelste methode, bovendien, het sluit de lijst van de langzaamste manieren om te organiseren. Echter, het heeft zo zijn voordelen. Zo is de methode voor het sorteren van bubble - de meest dat noch is een natuurlijke en logische oplossing voor het probleem, als je wilt om de items in een bepaalde volgorde te regelen. Een gewoon mens met de hand, bijvoorbeeld, het zal ze te gebruiken - gewoon door intuïtie.

Waar had zo'n ongewone naam?

Methode naam kwam, met behulp van de analogie van luchtbellen in het water. Het is een metafoor. Evenmin luchtbellen omhoog - omdat hun dichtheid groter is dan een vloeistof (in dit geval - het water), en elk array-element, des te kleiner is de waarde, hoe meer geleidelijke weg naar de top van de lijst nummers.

Beschrijving van het algoritme

bubble sort wordt als volgt uitgevoerd:

  • first pass: de elementen van de array getallen door de twee paren en vergeleken. Als sommige elementen van de twee-man team eerste waarde groter is dan de tweede, het programma maakt ze worden verwisseld;
  • bijgevolg het grootste aantal missers het einde van de array. Terwijl alle andere elementen blijven zoals ze in een chaotische wijze, en vereisen meer sorteren;
  • en daarom om een tweede doorgang en wel naar analogie van de vorige (reeds beschreven) en een aantal vergelijkingen - min één;
  • bij passage nummer drie vergelijkingen, één minder dan de tweede, en de beide, dan de eerste. En ga zo maar door;
  • vatten dat elke doorgang (alle waarden in de matrix, het specifieke nummer) minus (passage nummer) vergelijkingen.

Nog kortere algoritme van een programma kan worden geschreven als:

  • blok getallen wordt gecontroleerd zolang de twee nummers worden gevonden, de tweede daarvan wordt gebonden aan groter dan de eerste;
  • verkeerd geplaatst ten opzichte van elkaar elementen van het stelsel software swaps.

Pseudocode basis van de beschreven algoritme

De eenvoudigste uitvoering wordt als volgt uitgevoerd:

Sortirovka_Puzirkom procedure;

begin

cycle voor j van nachalnii_index tot konechii_index;

cycle voor i van nachalnii_index tot konechii_index-1;

als massief [i]> massief [i + 1] (eerste element groter is dan een seconde), dan:

(Change plaatst waarden);

einde

Natuurlijk, deze eenvoud verergert de situatie alleen maar: hoe eenvoudiger het algoritme, hoe meer het manifesteert alle gebreken. Investeringsquote van de tijd is te groot zelfs voor een kleine array (hier komt in relativiteit: De hoeveelheid tijd die voor de leek lijkt misschien klein, maar in feite een programmeur per seconde of zelfs milliseconde telt).

Het kostte de betere uitvoering. Bijvoorbeeld, rekening houdend met de uitwisseling van waarden matrixlocaties:

Sortirovka_Puzirkom procedure;

begin

sortirovka = true;

cyclus totdat sortirovka = true;

sortirovka = false;

cycle voor i van nachalnii_index tot konechii_index-1;

als massief [i]> massief [i + 1] (eerste element groter is dan een seconde), dan:

(Wisseling elementen plaatsen);

sortirovka = true; (Vastgesteld uitwisseling heeft plaatsgevonden).

End.

beperkingen

Het belangrijkste nadeel - de duur van het proces. Hoeveel tijd wordt uitgevoerd sorteer-algoritme bubble?

Doorlooptijd wordt berekend uit het aantal vierkante getallen in de array - het eindresultaat ervan evenredig.

Als het ergste geval de matrix zo vaak wordt doorgegeven als zij elementen minus één waarde. Dit gebeurt omdat uiteindelijk is er slechts één element dat niets te vergelijken zijn, en de laatste doorgang door de reeks onbruikbaar actie.

Bovendien, effectieve werkwijze voor het sorteren van een eenvoudige uitwisseling, zoals dat heet, alleen reeksen van kleine omvang. Grote hoeveelheden data met behulp van het proces zal niet werken: het resultaat zal ofwel een fout of falen van het programma.

waardigheid

bubble sort is zeer gemakkelijk te begrijpen. De curricula van de technische universiteiten in de studie van het bestelproces elementen van zijn vele geschiedde in de eerste plaats. De methode is eenvoudig te implementeren zowel Delphi programmeertaal (L (Delphi) en de C / C ++ (C / C plus plus), een zeer eenvoudige waarden locatie algoritme in de juiste volgorde en op de Pascal (Pascal). Bubble sort ideaal voor beginners.

Vanwege de nadelen van het algoritme wordt niet gebruikt in buitenschoolse doeleinden.

Visual sorteerprincipe

De oorspronkelijke weergave van de matrix 22 4 74 8 44 37 1 7

Stap 1 8 22 4 74 44 37 1 7

8 22 4 74 44 1 37 7

8 22 4 74 1 44 37 7

22 1 4 8 74 44 37 7

8 22 1 4 74 44 37 7

8 1 22 4 74 44 37 7

1 8 22 4 74 44 37 7

Stap 2 1 8 22 4 74 44 7 37

1 8 22 74 7 4 44 37

1 8 22 7 4 74 44 37

1 8 22 7 4 74 44 37

1 8 4 22 7 74 44 37

1 4 8 22 7 74 44 37

Stap 4 8 1 3 7 22 74 37 44

1 4 8 22 7 37 74 44

1 4 8 22 7 37 74 44

1 4 7 8 22 37 74 44

1 4 7 8 22 37 74 44

Stap 1 4 7 4 8 22 37 44 74

1 4 7 8 22 37 44 74

1 4 7 8 22 37 44 74

1 4 7 8 22 37 44 74

Stap 1 4 7 5 8 22 37 44 74

1 4 7 8 22 37 44 74

1 4 7 8 22 37 44 74

Stap 1 4 7 6 8 22 37 44 74

1 4 7 8 22 37 44 74

Stap 1 4 7 7 8 22 37 44 74

bubble sort voorbeeld in Pascal

bijvoorbeeld:

const kol_mas = 10;

var massiv: matrix [1..kol_mas] van integer;

a, b, k: integer;

beginnen

writeln ( 'input', kol_mas, 'elementen array');

voor: = 1 tot kol_mas doen readln (massief [a ]);

naar een: = 1 tot kol_mas-1 doen beginnen

B: = a + 1 tot kol_mas doen beginnen

als massief [a]> massief [ b] dan beginnen

k: = massiv [a]; massief [a]: = massiv [ b]; massief [b]: = k;

end;

end;

end;

writeln ( 'na soort');

voor: = 1 tot kol_mas doen writeln (massief [a ]);

end.

Voorbeeld bubble sorteren in C taal (C)

bijvoorbeeld:

#include

#include

int main (int argc, char * argv [])

{

int massief [8] = {36, 697, 73, 82, 68, 12, 183, 88}, i, ff;

voor (;;) {

ff = 0;

voor (i = 7; i> 0; i -) {

if (massief [i] [i- 1]) {

swap (massief [i], massiv [i- 1]);

ff ++;

}

}

if (ff == 0) te breken;

}

getch (); // vertoning vertraging

terugkeer 0;

}.

Similar articles

 

 

 

 

Trending Now

 

 

 

 

Newest

Copyright © 2018 birmiss.com. Theme powered by WordPress.