jak wykonac sortowanie babelkowealgorytm bubble sort, PHP Skrypty


[PHP] Jak wykonać sortowanie bąbelkowe (algorytm Bubble Sort)?

0x01 graphic

Chcesz wykorzystać do sortowania algorytm BubbleSort, czyli sortowanie metodą bąbelkową.

0x01 graphic

To bardzo prosty algorytm, który nadaje się do sortowania niewielkich tablic. Polega na przemieszczaniu na koniec tablicy największych wartości, przez co sposób przypomina wypływanie na powierzchnię wody bąbli - stąd wzięła się jego nazwa.

Algorym polega na porównywaniu kolejnych, sąsiadujących elementów. Jeżeli poprzedni jest większy niż aktualny, ich pozycje są zamieniane. Algorytm wykorzystuje dwie pętle for, w których przegląda zawartość tablicy.

<?

$t = array(7, 9, 1, 2, 6, 7, 3);

$n = count($t); // liczba elementów tablicy

for ($i=0;$i<$n-1;$i++) {

for ($j=$n-1;$j>$i;$j--) {

if ($t[$j]<$t[$j-1]) {

list($t[$j],$t[$j-1]) = array($t[$j-1],$t[$j]);

}

}

}

for($i=0;$i<$n;$i++) echo $t[$i],", ";

// wynik: 1, 2, 3, 6, 7, 7, 9,

?>

Wymiana elementów tablicy została wykonana przy pomocy triku z list() i array(), bez potrzeby korzystania ze zmiennej tymczasowej.

Powyższy algorytm jest wzorcowy, jednak w praktyce stosuje się jego modyfikację, która jest nieco szybsza, w przypadku gdy tablica jest wstępnie posortowana (lub jeżeli jest w pełni posortowana).

<?

$t = array(7, 9, 1, 2, 6, 7, 3);

$dalej=true;

$n = count($t); // liczba elementów tablicy

for ($i=0;$i<$n-1 && $dalej;$i++) {

$dalej = false;

for ($j=$n-1;$j>$i;$j--) {

if ($t[$j]<$t[$j-1]) {

list($t[$j],$t[$j-1]) = array($t[$j-1],$t[$j]);

$dalej = true;

}

}

}

for($i=0;$i<$n;$i++) echo $t[$i],", ";

// wynik: 1, 2, 3, 6, 7, 7, 9,

?>

W tym algorytmie zakładamy od razu, że tablica jest posortowana i po wejściu do pętli zmienna $dalej otrzymuje wartość false. Dopiero w momencie, gdy nastąpi zmiana miejsc, nadajemy jej wartość true i dalej sortujemy tablicę. Gdy nie było żadnej zamiany, nie ma sensu dalej przeszukiwać elementów (wszystko jest posortowane) i wychodzimy z pętli.



Wyszukiwarka

Podobne podstrony:
Jak wykonać obsługę stosu (First In, PHP Skrypty
jak wykonac sortowanie przez zamiane wymiane wybor algorytm selection sort, PHP Skrypty
jak wykonac sortowanie przez wstawianie algorytm inserion sort, PHP Skrypty
Jak wstawić do bazy danych kod PHP i potem wykonać go w momencie pobrania z bazy, PHP Skrypty
jak policzyc objetosc plikow w katalogu i podkatalogach, PHP Skrypty
Jak zapisać do pliku zawartość tablicy, PHP Skrypty
jak stworzyc bramke do wysyłania maili, PHP Skrypty
Jak zakładać i kasować tabele w bazie danych, PHP Skrypty
Jak policzyć największy wspólny dzielnik (NWD, PHP Skrypty
jak wykonac strone z logowaniem do innej strony, PHP Skrypty
Jak wysłać ze strony WWW e-mail z dowolnym załącznikiem, PHP Skrypty
Jak przerwać wykonywanie pętli (for, PHP Skrypty
Jak stworzyć prostą wyszukiwarkę dla własnych stron WWW, PHP Skrypty
Jak stworzyć zaawansowany test wyboru lub quiz, PHP Skrypty
Jak wygenerować bezpieczne, PHP Skrypty
Jak zrobić stronę dostępną na hasło tylko dla wybranych użytkowników, PHP Skrypty
Jak wyświetlić zawartość katalogu jako linki służące do pobrania plików, PHP Skrypty
Jak pobrać zawartość strony WWW korzystając z biblioteki CURL, PHP Skrypty

więcej podobnych podstron