Sort衡暊臉bel


Algorytm sortowania b膮belkowego jest jednym z najstarszych algorytm贸w sortuj膮cych. Mo偶na go potraktowa膰 jako ulepszenie opisanego w poprzednim rozdziale algorytmu sortowania g艂upiego. Zasada dzia艂ania opiera si臋 na cyklicznym por贸wnywaniu par s膮siaduj膮cych element贸w i zamianie ich kolejno艣ci w przypadku niespe艂nienia kryterium porz膮dkowego zbioru. Operacj臋 t臋 wykonujemy dot膮d, a偶 ca艂y zbi贸r zostanie posortowany.

Algorytm sortowania b膮belkowego przy porz膮dkowaniu zbioru nieposortowanego ma klas臋 czasowej z艂o偶ono艣ci obliczeniowej r贸wn膮 O(n2). Sortowanie odbywa si臋 w miejscu.

Jako przyk艂ad dzia艂ania algorytmu sortowania b膮belkowego posortujemy przy jego pomocy 5-cio elementowy zbi贸r liczb {5 4 3 2 1}, kt贸ry wst臋pnie jest posortowany w kierunku odwrotnym, co mo偶emy uzna膰 za przypadek najbardziej niekorzystny, poniewa偶 wymaga przestawienia wszystkich element贸w.

Obieg

Zbi贸r

Opis operacji

1

聽5聽4聽3聽2聽1聽

Rozpoczynamy od pierwszej pary, kt贸ra wymaga wymiany element贸w

聽4聽5聽3聽2聽1聽

Druga para te偶 wymaga zamiany element贸w

聽4聽35聽2聽1聽

Wymagana wymiana element贸w

聽4聽3聽2聽5聽1聽

Ostatnia para r贸wnie偶 wymaga wymiany element贸w

聽4聽3聽2聽1聽5

Stan po pierwszym obiegu. Zwr贸膰 uwag臋, i偶 najstarszy element (5) znalaz艂 si臋 na ko艅cu zbioru, a聽najm艂odszy (1) przesun膮艂 si臋 o jedn膮 pozycj臋 w lewo.

2

聽4聽3聽2聽1聽5聽

Para wymaga wymiany

聽3聽4聽2聽1聽5聽

Para wymaga wymiany

聽3聽2聽4聽15聽

Para wymaga wymiany

聽3聽2聽1聽4聽5聽

Elementy s膮 w dobrej kolejno艣ci, zamiana nie jest konieczna.

聽3聽2聽1聽4聽5聽

Stan po drugim obiegu. Zwr贸膰 uwag臋, i偶 najmniejszy element (1) zn贸w przesun膮艂 si臋 o聽jedn膮 pozycj臋 w聽lewo. Z obserwacji tych mo偶na wywnioskowa膰, i偶 po ka偶dym obiegu najmniejszy element w臋druje o聽jedn膮 pozycj臋 ku pocz膮tkowi zbioru. Najstarszy element zajmuje natomiast swe miejsce ko艅cowe.

3

聽3聽2聽1聽4聽5聽

Para wymaga wymiany

聽2聽3聽1聽4聽5聽

Para wymaga wymiany

聽2聽1聽3聽4聽5聽

Dobra kolejno艣膰

聽2聽1聽3聽4聽5

Dobra kolejno艣膰

聽2聽1聽3聽4聽5聽

Stan po trzecim obiegu. Wnioski te same.

4

聽2聽1聽3聽4聽5聽

Para wymaga wymiany

聽1聽2聽3聽4聽5聽

Dobra kolejno艣膰

聽1聽2聽3聽4聽5聽

Dobra kolejno艣膰

聽1聽2聽3聽4聽5聽

Dobra kolejno艣膰

1聽2聽3聽4聽5聽

Zbi贸r jest posortowany. Koniec

Posortowanie naszego zbioru wymaga 4 obieg贸w. Jest to oczywiste: w przypadku najbardziej niekorzystnym najmniejszy element znajduje si臋 na samym ko艅cu zbioru wej艣ciowego. Ka偶dy obieg przesuwa go o jedn膮 pozycj臋 w kierunku pocz膮tku zbioru. Takich przesuni臋膰 nale偶y wykona膰 n - 1 (n - ilo艣膰 element贸w w zbiorze).

Algorytm sortowania b膮belkowego, w przeciwie艅stwie do algorytmu sortowania g艂upiego, nie przerywa por贸wnywania par element贸w po napotkaniu pary nie spe艂niaj膮cej za艂o偶onego porz膮dku. Po zamianie kolejno艣ci element贸w sprawdzana jest kolejna para element贸w sortowanego zbioru. Dzi臋ki temu podej艣ciu ro艣nie efektywno艣膰 algorytmu oraz zmienia si臋 klasa czasowej z艂o偶ono艣ci obliczeniowej z O(n3) na O(n2).

0x01 graphic

// Sortowanie B膮belkowe - Wersja nr 1

//-------------------------------------------------

// (C)2005 mgr Jerzy Wa艂aszek

// I Liceum Og贸lnokszta艂c膮ce

// im. K. Brodzi艅skiego

// w Tarnowie

//-------------------------------------------------

#include <cmath>

#include <iostream>

#include <iomanip>

using namespace std;

const int N = 20; // Liczebno艣膰 zbioru.

// Program g艂贸wny

//---------------

main()

{

int d[N],i,j;

cout << " Sortowanie babelkowe\n"

" WERSJA NR 1\n"

"----------------------\n"

"(C)2005 Jerzy Walaszek\n\n"

"Przed sortowaniem:\n\n";

// Najpierw wype艂niamy tablic臋 d[] liczbami pseudolosowymi

// a nast臋pnie wy艣wietlamy jej zawarto艣膰

srand((unsigned)time(NULL));

for(i = 0; i < N; i++) d[i] = rand() % 100;

for(i = 0; i < N; i++) cout << setw(4) << d[i];

cout << endl;

// Sortujemy

for(j = 0; j < N - 1; j++)

for(i = 0; i < N - 1; i++)

if(d[i] > d[i + 1]) swap(d[i], d[i + 1]);

// Wy艣wietlamy wynik sortowania

cout << "Po sortowaniu:\n\n";

for(i = 0; i < N; i++) cout << setw(4) << d[i];

cout << endl;

system("PAUSE");

}



Wyszukiwarka

Podobne podstrony:
Algorytmy 艣ci膮ga, Insertion sort:
Heap Sort-sortowanie przez kopcowanie, Informatyka -all, INFORMATYKA-all
algorytmy w05 DFS sort topologi Nieznany (2)
narz臋dzia do badania Q-sort
Sort-Alg
ALS - 009-005 - Program Sortowanie INSERTION SORT, Informatyka - uczelnia, WWSI i WAT, wwsi, SEM II,
el.cw13 - O艣wietlenie elektryczne, Politechnika Lubelska, Studia, Studia, Sprawozdanka, ELEKTROTECH
PTM bubble sort
doc0939 Bubble Sort
jak wykonac sortowanie przez zamiane wymiane wybor algorytm selection sort, PHP Skrypty
sort
sort EAAHJHCYOUW3LXTGJFVTSBQSRCFRV2KYEAQPHPY
Sort by wybo鈺犆紃
AiSD sort
ASD SORT
jak wykonac sortowanie babelkowealgorytm bubble sort, PHP Skrypty
Sort by wstawianie

wi臋cej podobnych podstron