Computers, Programmering
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]
swap (massief [i], massiv [i- 1]);
ff ++;
}
}
if (ff == 0) te breken;
}
getch (); // vertoning vertraging
terugkeer 0;
}.
Similar articles
Trending Now