553 Shares 8329 views

technik w programowaniu Sortowanie: sortowanie „bańki”

Sortowanie bąbelkowe jest nie tylko uważana za najszybszą metodę, ponadto zamyka listę najwolniejszych sposobów zorganizowania. Ma jednak swoje zalety. Zatem metoda sortowania bańki – najbardziej, że nie jest naturalnym i logicznym rozwiązaniem problemu, jeśli chcesz zorganizować elementy w określonej kolejności. Zwykłym człowiekiem ręcznie, na przykład, że będą z nich korzystać – po prostu intuicją.

Skąd takie nietypowe imię?

Nazwa metody wymyślił, stosując analogię pęcherzyków powietrza w wodzie. Jest to metafora. Podobnie jak małe pęcherzyki powietrza w górę – ponieważ ich gęstość jest większa niż płynu (w tym przypadku – z wody), a każdy element tablicy, tym mniejsza jest wartość, tym bardziej stopniowy sposób na szczycie listy numerów.

Opis algorytmu

bubble sort odbywa się w następujący sposób:

  • Pierwszy przebieg: elementy macierzy liczb zajmuje dwóch par, jak również w porównaniu. Jeśli niektóre elementy zespołu pierwszej wartości dwa-man jest większa niż druga, program sprawia im miejsca wymiany;
  • W związku z tym największą liczbę pomyłek koniec tablicy. Podczas gdy pozostałe elementy pozostają niezmienione w sposób chaotyczny i wymagają bardziej sortowania;
  • a zatem wymagają drugą przepustkę: jest ona wytwarzana przez analogię z poprzednim (już opisane) i posiada szereg porównań – minus jeden;
  • pod numerem pasażu trzy porównanie, jeden mniej niż sekundę, a dwa, niż pierwszy. I tak dalej;
  • Podsumowując, aby każdy fragment ma (wszystkie wartości w tablicy konkretny numer) minus (liczby pasaży) porównań.

Nawet krótszy algorytm programu można zapisać jako:

  • tablicę liczb sprawdza się ile występują dowolne dwie liczby, drugi z nich związana jest większa niż w pierwszej kolejności;
  • nieprawidłowo ustawione w stosunku do siebie elementami zamiany oprogramowania tablicy.

Pseudokod na podstawie algorytmu opisanego

Najprostsza realizacja odbywa się w następujący sposób:

Procedura Sortirovka_Puzirkom;

początek

cykl dla j od nachalnii_index do konechii_index;

cykl I z nachalnii_index do konechii_index-1;

Jeśli Massiv [j]> Massiv [i + 1] (pierwszy element większe niż drugie), a następnie:

(Zmiana miejsca wartości);

koniec

Oczywiście, ta prostota tylko pogarsza sytuację: prostsze algorytm, tym bardziej przejawia wszystkie wady. Stosunek inwestycja czasu jest zbyt wielka nawet dla małej tablicy (tutaj przychodzi względności: Ilość czasu dla laika może wydawać się niewielka, ale w rzeczywistości programista co drugi lub nawet milisekunda impulsy).

Zajęło lepszą realizację. Na przykład, biorąc pod uwagę wymianę wartości w miejscach tablicy:

Procedura Sortirovka_Puzirkom;

początek

sortirovka = prawdziwa;

Cykl aż sortirovka = TRUE;

sortirovka = fałszywe;

cykl I z nachalnii_index do konechii_index-1;

Jeśli Massiv [j]> Massiv [i + 1] (pierwszy element większe niż drugie), a następnie:

(Zmiana elementów miejsca);

sortirovka = prawdziwa; (Zidentyfikowany że wymiana została dokonana).

Koniec.

ograniczenia

Główną wadą – czas trwania całego procesu. Ile czasu jest wykonywany algorytm sortowania bańka?

Ołów czasie oblicza się liczbę numerów kwadratowy w tablicy – końcowy rezultat jest proporcjonalny.

Jeśli najgorszy przypadek tablica przepuszcza tyle razy, ile to ma elementy minus jedna wartość. Dzieje się tak dlatego, że w końcu jest tylko jednym z elementów, które nie mają nic do porównania, a ostatni przechodzi przez działanie tablicy staje się bezużyteczny.

Ponadto skuteczna metoda sortowania prostą wymianę, jak to nazywa, tylko dla tablic o niewielkich rozmiarach. Duże ilości danych za pomocą procesu nie będzie działać: wynik będzie albo błąd lub awaria programu.

godność

Sortowanie bąbelkowe jest bardzo łatwy do zrozumienia. Programy nauczania uczelni technicznych w badaniu elementów uporządkowania swojej tablicy przejść w pierwszej kolejności. Metoda ta jest łatwa do wdrożenia zarówno języka Delphi programowania (L (Delphi) oraz C / C ++ (C / C plus plus), niezwykle prostych wartości algorytmu lokalizacji w odpowiedniej kolejności i na Pascal (Pascal). Bubble sortowania jest idealny dla początkujących.

Z powodu wad algorytmu nie jest wykorzystywany w celach pozalekcyjnych.

Zasada wizualny sortowania

Widoku początkowego tablicy 8 22 4 74 44 37 1 7

Etap 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

8 22 4 1 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

Etap 2 1 8 22 4 74 44 7 37

1 8 22 4 74 7 44 37

1 8 22 4 7 74 44 37

1 8 22 4 7 74 44 37

1 8 4 22 7 74 44 37

1 4 8 22 7 74 44 37

Etap 3 1 4 8 22 7 74 37 44

1 4 8 22 7 37 74 44

1 4 8 22 7 37 74 44

1 4 8 7 22 37 74 44

1 4 7 8 22 37 74 44

Etap 4 1 4 7 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

Etap 5 1 4 7 8 22 37 44 74

1 4 7 8 22 37 44 74

1 4 7 8 22 37 44 74

Etap 6 1 4 7 8 22 37 44 74

1 4 7 8 22 37 44 74

Etap 7 1 4 7 8 22 37 44 74

Przykładem bubble sort w Pascalu

Przykład:

const kol_mas = 10;

var Massiv: tablica [1..kol_mas] o całkowitej;

A, B, K: całkowita;

rozpocząć

WriteLn ( 'wejście' kol_mas, 'elementów macierzy');

dla: = 1 kol_mas do readln (Massiv [a ]);

dla: = 1 do kol_mas-1 zrobić rozpocząć

dla B: = a + 1, aby nie rozpocząć kol_mas

Jeśli Massiv [a]> Massiv [ b], a następnie rozpocząć

k: = Massiv [A]; Massiv [a] = Massiv [ b]; Massiv [b] = k;

kończyć;

kończyć;

kończyć;

WriteLn ( 'po rodzaju');

dla: = 1 kol_mas do writeln Massiv ([a ]);

end.

Przykład bańki sortowania w języku C (C)

Przykład:

#include

#include

Int główne (Int ARGC char * argv [])

{

Int Massiv [8] = {36, 697, 73, 82, 68, 12, 183, 88}, i, i następne;

for (;;) {

ff = 0;

for (i = 7: i> 0; i -) {

if (Massiv [b] <Massiv [I- 1]) {

Zmienne (Massiv [i] Massiv [I- 1]);

ff ++;

}

}

jeśli (FF == 0) break;

}

getch (); // opóźnienie wyświetlacz

return 0;

}.