Darmowe Forum
Grudzieñ 22, 2024, 03:16:25 *
Witamy, Go¶æ. Zaloguj siê lub zarejestruj.
Czy dotar³ do Ciebie email aktywacyjny?

Zaloguj siê podaj±c nazwê u¿ytkownika, has³o i d³ugo¶æ sesji
Aktualno¶ci: Forum zosta³o uruchomione!
 
   Strona g³ówna   Pomoc Zaloguj siê Rejestracja  
Strony: [1]
  Drukuj  
Autor W±tek: Sortowanie  (Przeczytany 2206 razy)
admin
Administrator
Ekspert
*****
Wiadomo¶ci: 821


Email
« : 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;
}
« Ostatnia zmiana: Listopad 28, 2012, 10:20:23 wys³ane przez admin » Zapisane
admin
Administrator
Ekspert
*****
Wiadomo¶ci: 821


Email
« Odpowiedz #1 : 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.
« Ostatnia zmiana: Listopad 28, 2012, 09:43:12 wys³ane przez admin » Zapisane
admin
Administrator
Ekspert
*****
Wiadomo¶ci: 821


Email
« Odpowiedz #2 : Listopad 28, 2012, 10:06:08 »

Sortowanie przez kopcowanie ( kube³kowe).

Zapisane
Strony: [1]
  Drukuj  
 
Skocz do:  

Powered by SMF 1.1.11 | SMF © 2006-2008, Simple Machines LLC | Sitemap

Polityka cookies
Darmowe Fora | Darmowe Forum

moikrewni zlotasiodemka blackmoon mylittlepony articz