Ładny brzuch
Jaki jest najprostszy algorytm sortowania jaki moecie mi przedstawi w formie kodu rdowego ; > ?
najprostszy-bbelki :D , najszybszy-quicksort. koda niech kto inny walnie, bo ja nie mam go, a nie chce mi sie pisa od nowa :P
Najprostszy to sortowanie proste a nie bbelki:P
mniejwiecej polega to na tym, e przegldasz iletam razy tablice, i zamieniasz najmniejszy/najwiekszy element z pierwszym, potem drugim, trzecim, etc...
zoonoc: O(n^2)
Kod w C++:
//Inicjacja generatora liczb pseudolosowych srand(10); //Utworzenie tablicy int *arr = new int[100]; //wypenienie wartociami losowymi for(int i=0;i!=100;i++)arr[i]=rand()%100+1; bool zmiana=false; for(int i=0;i!=100;i++){ for(int j=i+1;j!=100;j++){ if(arr[i]>arr[j]){ int tmp = arr[i]; arr[i] = arr[j]; arr[j] = tmp; zmiana = true; } } if(!zmiana)break; }
:)
Jakbym komu czasem si chciao to niech sprawdzi to c wykodowaem ... czy jest to zgodne z algorytmem sortowania bbelkowego?
#include <iostream>
int main(void) {
int i =0;
int tablica[4];
while((tablica[i] = getchar()) != '\n') {
i++;
}
for(i=0;i<4;i++) {
std::cout << static_cast<char>(tablica[i]);
}
std::cout << std::endl;
int pomocnicza;
for(int j =0;j<4;j++) {
int odejmowanie = 0;
for(i=0;i<3-odejmowanie;i++) {
if(tablica[i] > tablica[i+1]) {
pomocnicza = tablica[i];
tablica[i] = tablica[i+1];
tablica[i+1] = pomocnicza;
}
}
odejmowanie++;
}
for(i=0;i<4;i++) {
std::cout << static_cast<char>(tablica[i]);
}
std::cout << std::endl;
return 0;
}
; )
No nie wiem... Mysle ze mozna by sie spierac czy babelkowe nie jest najprostsze. Nie chce mi sie podawac kodu (musialbym teraz pisac ;P ), krotko opisze:
sprawdzamy czy element nie jest wiekszy od tego ktory jest nad nim. jesli jest , to zamieniamy je miejscami... I tak do czasu kiedy w calej petli nie nastapi warunek
aktualny_element>element_wyzej
ja bym polecal jednak babelki...(ewentualnie przez wstawianie).
Komus sie jeszcze chcialo pisac ;)
no nie wiem... mysle, ze mozna by sie spierac, czy quicksort jest najszybszy ;) :P
wszystko zalezy od tego co sortujemy :] w niektorych przypadkach sa o wiele szybsze algorytmy sortujace.
Bble i scalaki:type tablica=array[1..100]of byte; Procedure BubbleSort(n:byte; var t:tablica); var i, j, tm:byte; begin for i:=1 to n-1 do for j:=n downto i+1 do if t[j]<t[j-1] then begin tm:=t[i]; t[i]:=t[j]; t[j]:=tm; end; end;type tablica=array[1..100]of byte; procedure Scal(p, s, k:byte; var t:tablica); var i,j,l:integer; z:tablica; begin i:=p; j:=s; l:=p; while (i<s) and (j<=k) do begin if t[i]<=t[j] then begin z[l]:=t[i]; inc(i); end else begin z[l]:=t[j]; inc(j); end; inc(l); end; while i<s do begin z[l]:=t[i]; inc(l); inc(j); end; while j <= k do begin z[l]:=t[j]; inc(l); inc(j); end; for i:=p to k do t[i]:=z[i]; end; procedure ScalSort(p, k:byte; var t:tablica); var s:byte; begin if p<k then begin s:=(p+k) div 2; scalSort(p,s,t); scalSort(s+1,k,t); scal(p,s+1,k,t); end; end;
zanotowane.pl doc.pisz.pl pdf.pisz.pl zsf.htw.pl
najprostszy-bbelki :D , najszybszy-quicksort. koda niech kto inny walnie, bo ja nie mam go, a nie chce mi sie pisa od nowa :P
Najprostszy to sortowanie proste a nie bbelki:P
mniejwiecej polega to na tym, e przegldasz iletam razy tablice, i zamieniasz najmniejszy/najwiekszy element z pierwszym, potem drugim, trzecim, etc...
zoonoc: O(n^2)
Kod w C++:
//Inicjacja generatora liczb pseudolosowych srand(10); //Utworzenie tablicy int *arr = new int[100]; //wypenienie wartociami losowymi for(int i=0;i!=100;i++)arr[i]=rand()%100+1; bool zmiana=false; for(int i=0;i!=100;i++){ for(int j=i+1;j!=100;j++){ if(arr[i]>arr[j]){ int tmp = arr[i]; arr[i] = arr[j]; arr[j] = tmp; zmiana = true; } } if(!zmiana)break; }
:)
Jakbym komu czasem si chciao to niech sprawdzi to c wykodowaem ... czy jest to zgodne z algorytmem sortowania bbelkowego?
#include <iostream>
int main(void) {
int i =0;
int tablica[4];
while((tablica[i] = getchar()) != '\n') {
i++;
}
for(i=0;i<4;i++) {
std::cout << static_cast<char>(tablica[i]);
}
std::cout << std::endl;
int pomocnicza;
for(int j =0;j<4;j++) {
int odejmowanie = 0;
for(i=0;i<3-odejmowanie;i++) {
if(tablica[i] > tablica[i+1]) {
pomocnicza = tablica[i];
tablica[i] = tablica[i+1];
tablica[i+1] = pomocnicza;
}
}
odejmowanie++;
}
for(i=0;i<4;i++) {
std::cout << static_cast<char>(tablica[i]);
}
std::cout << std::endl;
return 0;
}
; )
No nie wiem... Mysle ze mozna by sie spierac czy babelkowe nie jest najprostsze. Nie chce mi sie podawac kodu (musialbym teraz pisac ;P ), krotko opisze:
sprawdzamy czy element nie jest wiekszy od tego ktory jest nad nim. jesli jest , to zamieniamy je miejscami... I tak do czasu kiedy w calej petli nie nastapi warunek
aktualny_element>element_wyzej
ja bym polecal jednak babelki...(ewentualnie przez wstawianie).
Komus sie jeszcze chcialo pisac ;)
no nie wiem... mysle, ze mozna by sie spierac, czy quicksort jest najszybszy ;) :P
wszystko zalezy od tego co sortujemy :] w niektorych przypadkach sa o wiele szybsze algorytmy sortujace.
Bble i scalaki:type tablica=array[1..100]of byte; Procedure BubbleSort(n:byte; var t:tablica); var i, j, tm:byte; begin for i:=1 to n-1 do for j:=n downto i+1 do if t[j]<t[j-1] then begin tm:=t[i]; t[i]:=t[j]; t[j]:=tm; end; end;type tablica=array[1..100]of byte; procedure Scal(p, s, k:byte; var t:tablica); var i,j,l:integer; z:tablica; begin i:=p; j:=s; l:=p; while (i<s) and (j<=k) do begin if t[i]<=t[j] then begin z[l]:=t[i]; inc(i); end else begin z[l]:=t[j]; inc(j); end; inc(l); end; while i<s do begin z[l]:=t[i]; inc(l); inc(j); end; while j <= k do begin z[l]:=t[j]; inc(l); inc(j); end; for i:=p to k do t[i]:=z[i]; end; procedure ScalSort(p, k:byte; var t:tablica); var s:byte; begin if p<k then begin s:=(p+k) div 2; scalSort(p,s,t); scalSort(s+1,k,t); scal(p,s+1,k,t); end; end;