Tytu³: Sortowanie Wiadomo¶æ wys³ana przez: admin Listopad 28, 2012, 08:56:44 Sortowanie b±belkowe.
Algorytm ten polega na porównywaniu i ewentualnej zamianie miejscami par s±siaduj±cych ze sob± elementów. Sortowanie rozpoczyna siê od koñca lub pocz±tku tablicy. Je¿eli sortujemy rosn±co, to ostatni element tablicy porównywany jest z tym stoj±cym przed nim. Je¿eli ostatni jest mniejszy od przedostatniego nastêpuje zamiana miejscami. Je¿eli przedostatni jest mniejszy od ostatniego, to on staje siê b±belkiem i jest porównywany z kolejnymi. Poszczególne elementy zmieniaj± miejsce w tablicy o jedn± pozycje i powoli wêdruj± na swoje miejsce. Algorytm jest dobry dla ma³ych tablic czê¶ciowo ju¿ posortowanych. Jest to algorytm klasy O(N2) #include <cstdlib> #include <iostream> using namespace std; int main(int argc, char *argv[]) { int i,j,x,tmp; int tablica[5]; /* wczytywanie liczb z klawiatury */ cout << "Podaj 5 liczb : \n"; for (i=0; i<=4; i++) cin >>tablica[ i ]; /*wy¶wietlenie liczb w podanej kolejno¶ci*/ for (i=0; i<=4; i++) {cout.width(3);cout << tablica[ i ]; } cout << "\n\n"; /* sortowanie b±belkowe */ for (i=0;i<=3; i++) for (j=0;j<=3; j++) if (tablica[j]>tablica[j+1]) {tmp = tablica[j]; tablica[j] = tablica[j+1]; tablica[j+1] = tmp; } cout << "\n"; /* wy¶wietlanie posortowanych liczb */ for (i=0; i<=4; i++) {cout.width(3);cout << tablica[ i ]; } cout<<endl; system("PAUSE"); return EXIT_SUCCESS; } Tytu³: Odp: Sortowanie Wiadomo¶æ wys³ana przez: admin Listopad 28, 2012, 09:33:37 Sortowanie szybkie
Algorytm sortowania szybkiego jest uwa¿any za najszybszy algorytm dla danych losowych. Zasada jego dzia³ania opiera siê o metodê dziel i zwyciê¿aj. Na pocz±tku wybiera siê tzw. element osiowy (pewien element tablicy np. jej ¶rodek nazywany pivot), po czym na pocz±tek tablicy przenoszone s± wszystkie elementy mniejsze od niego, na koniec wiêksze, a w powsta³e miêdzy tymi obszarami puste miejsca trafia wybrany element. Nastêpnie sortuje siê osobno pocz±tkow± i koñcow± czê¶æ tablicy. Zbiór danych zostaje podzielony na dwa podzbiory i ka¿dy z nich jest sortowany niezale¿nie od drugiego. Dla zadanej tablicy A[1..p] wybieramy element p=A[l] i przeszukujemy resztê tablicy (tzn. A[l+1..p]) tak d³ugo, a¿ nie znajdziemy elementu wiêkszego ni¿ A[l]. Nastêpnie przeszukujemy t± tablicê od strony prawej póki nie znajdziemy elementu nie wiêkszego ni¿ A[l]. Gdy to osi±gniemy, zamieniamy miejscami te dwa elementy i zaczynamy ca³y proces od pocz±tku. Algorytm dzia³a tak d³ugo, a¿ wska¼nik poruszaj±cy siê w lewo i wska¼nik poruszaj±cy siê w prawo spotkaj± siê. Nale¿y wówczas zamieniæ element p=A[l] z ostatnim elementem lewej czê¶ci tablicy. Tytu³: Odp: Sortowanie Wiadomo¶æ wys³ana przez: admin Listopad 28, 2012, 10:06:08 Sortowanie przez kopcowanie ( kube³kowe).
|