algorytm.org

Sortowanie bąbelkowe (bubblesort)

Baza Wiedzy
wersja offline serwisu przeznaczona na urządzenia z systemem Android
Darowizny
darowiznaWspomóż rozwój serwisu
Nagłówki RSS
Artykuły
Implementacje
Komentarze
Forum
Bookmarki






Sonda
Implementacji w jakim języku programowania poszukujesz?

Sortowanie bąbelkowe (bubblesort)
Ocena użytkowników:***** / 120
SłabyŚwietny 
Wpisany przez Michał Knasiecki, 13 sierpnia 2005 11:03

Jest to jeden z prostszych algorytmów sortowania.
Sprawdzamy całą tablicę od końca, jeżeli trafimy na parę elementów, w której większy poprzedza mniejszy to zamieniamy je miejscami i znów zaczynamy przeszukiwać tą tablicę od końca. Czynność powtarzamy tak długo aż podczas sprawdzania całej tablicy, nie zajdzie ani jedna zamiana elementów. Realizuje się to najczęściej za pomocą zmiennej logicznej.
Algorytm nosi nazwę bąbelkowego, gdyż najmniejsze liczby "wypływają" z dołu tablicy na jej szczyt.
Oto przykład zastosowania dla nieuporządkowanego ciągu liczb <<2, 4, 1, 3>>.
Image
Przy następnym przebiegu nie zajdzie ani jedna zmiana, to znak, że ciąg jest już posortowany.
Z powyższego zdania można wyciągnąć wniosek, że gdy ciąg wejściowy będzie posortowany, to algorytm wykona tylko jeden przebieg. Jest to duża zaleta tego sposobu sortowania, niektóre metody będą sortowały ciąg nawet jeśli będzie on posortowany.
Z kolei najgorszym zestawem danych dla tego algorytmu jest ciąg posortowany nierosnąco.

Implementacje
AutorJęzyk
programowania
KomentarzOtwórzPobierzOcena
krisC#z użyciem flagi zmiany oraz wypisywaniem kolejnych kroków
.cs
.cs
***** / 13
SonquerC#bez flagi zmiany
.cs
.cs
***** / 1
Michał KnasieckiC/C++
.cpp
.cpp
***** / 18
MarianC/C++C++ streams
.cpp
.cpp
***** / 9
Krzysztof SośnierzC/C++C++ templates
.cpp
.cpp
***** / 8
marianoC/C++C++
.cpp
.cpp
***** / 7
Krzysztof KrancC/C++C++
.cpp
.cpp
***** / 1
dawidex44C/C++C++ - prosty przykład - wszystko w jednej funkcji
.cpp
.cpp
***** / 20
Tomasz LubińskiDelphi/PascalBorland Delphi 5
.pas
.pas
***** / 9
Tomasz LubińskiJavaz użyciem flagi zmiany
.java
.java
***** / 16
Robert ZiarkoJavabez flagi zmiany
.java
.java
***** / 0
Przemysław PobiedzińskiJava
.java
.java
***** / 1
Jakub KoniecznyJava_Block
.jbf
.jbf
***** / 3
Dominik GoździukPerl
.pl
.pl
***** / 0
_marass_Php
.php
.php
***** / 4
Jakub KoniecznyPython
.py
.py
***** / 2
Kamil SochaPython
.py
.py
***** / 0
 
Dodaj własną implementację tego algorytmu
  • Zaloguj się na stronie
Plik:
Język
programowania:
Komentarz:
  By móc dodać implementacje zaloguj się na stronie

Poprawiony: 27 maja 2011 08:43
Komentarze
photo
+2 # NABI 2009-07-24 14:14
Super opracowana strona nareszcie to zrozumiałam NABI
Odpowiedz | Odpowiedz z cytatem | Cytować
photo
+2 # NAZIR 2009-09-13 20:34
Potwierdzam opracowanie SUPER ! - jak by był nr. konta to chętnie bym wpłacił na dalsze prace w tym temacie
Odpowiedz | Odpowiedz z cytatem | Cytować
photo
-1 # a bo to była AduSia..;* 2009-10-17 16:43
nie zła stronka...;]

skorzystam bo baardzo mi sie przyda..hehe...;]
wkońcu skumałam o co w tym chodzi...


poooOzdrówkA.!
Odpowiedz | Odpowiedz z cytatem | Cytować
photo
0 # Farołż 2009-11-05 15:18
Świetnie wytłumaczony. Oby więcej takich artykułów.
Odpowiedz | Odpowiedz z cytatem | Cytować
photo
-1 # sedzia ania 2010-02-18 18:01
a co jeśli w tablicy występują 2 takie same elementy?
Odpowiedz | Odpowiedz z cytatem | Cytować
photo
-2 # eliiiiiiiiii 2010-02-28 16:49
a jak to zrobić w eli?
Odpowiedz | Odpowiedz z cytatem | Cytować
photo
-1 # Olek 2010-06-24 18:46
Jeżeli występują takie same elementy to w zależności od postawionego warunku ( tab > tab[i+1] , bądź tab >= tab[i+1] ) albo zamieni te liczby miejscami albo sprawdzi warunek i przejdzie dalej.
Odpowiedz | Odpowiedz z cytatem | Cytować
photo
0 # daniel666 2013-12-28 12:30
Cytuję Olek:
Jeżeli występują takie same elementy to w zależności od postawionego warunku ( tab > tab[i+1] , bądź tab >= tab[i+1] ) albo zamieni te liczby miejscami albo sprawdzi warunek i przejdzie dalej.

nie moze byc warunku ">=" wtedy zamienialby te dwie wartosci. wracal na koniec , dochodzil do nich znowu. zamienial i wracal na koniec. by sie zapletlilo po prostu. algorytm musi to olać
Odpowiedz | Odpowiedz z cytatem | Cytować
photo
-2 # Radek 2010-07-01 17:54
Jest to algorytm stabilny więc zamiana elementów miejscami o tych samych kluczach nie występuje. (Chyba że ktoś pisze kod z własnymi warunkami i ma zamiar zmieniać kolejność elementów).
Odpowiedz | Odpowiedz z cytatem | Cytować
photo
-3 # Tomaaaasssszek 2010-09-03 16:24
Dlaczego jak uruchamiam program w C++ to zaznacza błąd przy { ?
Odpowiedz | Odpowiedz z cytatem | Cytować
photo
-10 # maYster 2011-12-12 11:12
To nie jest sortowanie bąbelkowe. W sortowaniu bąbelkowym każde przejście pętli prowadzi do "wypłynięcia" największego albo najmniejszego elementu odpowiednio na koniec lub początek ciągu.
Odpowiedz | Odpowiedz z cytatem | Cytować
photo
-1 # yo. 2012-03-27 11:28
fajne,git. przydalo sie na infie
Odpowiedz | Odpowiedz z cytatem | Cytować
Dodaj komentarz

Kod antysapmowy Odśwież