Sortowanie

0

Przepraszam za glupie pytanie z najbardziej podstawowych podstaw informatyki, ale studiowalem mocno inne zagadnienia:

Czy ktos moglby mi podeslac algorytm sortowania szybszego niz babelki (wolniejszego zreszta pewnie nie ma...). Albo w Delphi, albo w jakims pseudokodzie, albo opisowo w ludzkim jezyku. Moze byc Basic tylko blagam bez C!!!

--Pawel

Delphi6

0

Mailnij do mnie .....

0

Do mnie tesh mozesh..
--Delphi 4

Skysh The God, Your Slave

0

K2, chetnie mailne ale daj swoj email albo sie zarejestruj na forum, pls.--Pawel

Delphi6

0

K2 [mailto:[email protected]] w dniu 6.3.2002 15:41 napisal:
Mailnij do mnie .....

Wal na forum - inny tez pewnie chcieli by wiedziec :)
Albo ja przesle cos zaraz...--Pozdrawiam!
Adam Boduch
www.4programmers.net

0

ja wymyslilem cos takiego (pascal);

uses crt;

var pomieszane,posortowane:array[1..100]of integer; { np.}
x,y,z:integer;

begin
randomize;
x:=0;
repeat
x:=x+1;
pomieszane[x]:=1+random(100); {no, musialem jakos pomieszac}
until x=100;
y:=0;
z:=0;
repeat
z:=z+1;
for x:=1 to 100 do
begin
if pomieszane[x]=z then
begin
y:=y+1;
posortowane[y]:=pomieszane[x];
end;
end;
x:=0;
until z=100;
for x:=1 to 100 do {Sprawdzenie (jak ktos nie wierzy)}
begin
write(x,'=',posortowane[x],' ');
end;
end.

ten program bedzie sortowal elementy tablicy o nazwaie 'pomieszane' w sposob rosnacy czyli
posortowane[1]:=najmniejszy element tablicy pomieszane

                         K_asm_il
0

Co do algorytmu wyzej, to ja moze sie myle, ale jak bede sortowal tablice [1..10] typu integer, to przez proste bombelki wykonam tylko 100 operacjii, a tamtym algorytmem okolo 64000 od kwadratu. Nie tak??
Chyba cos podobnego fachowo nazywa sie sortowaniem przez zliczanie, ale z zastrzezeniem, ze to dziala tylko jak jest maly zakres w porownaniu do ilsci liczb do posortowania.--Delphi 4

Skysh The God, Your Slave

0

A moze by tak quicksort?

var tab : array [1..30000] of Integer;
li : Integer;

Function Podziel(l,p : Integer):Integer;
var x,i,j,tmp : Integer;
Begin
x:=Random(p-l+1)+l;
tmp:=tab[l];
tab[l]:=tab[x];
tab[x]:=tmp;
x:=tab[l];
i:=l-1;
j:=p+1;
while TRUE do
begin
repeat
inc(i);
until tab[i]&gt=x;
repeat
dec(j);
until tab[j]&lt=x;
if i&ltj then
begin
tmp:=tab[i];
tab[i]:=tab[j];
tab[j]:=tmp;
end else
begin Podziel:=j; Exit; end;
end;
End;

Procedure QSort (l,p : Integer);
var q : Integer;
Begin
if l&ltp then
begin
q:=podziel(l,p);
QSort(l,q);
QSort(q+1,p);
end;
End;

BEGIN
for li:=1 to 30000 do
tab[li]:=30001-li;

QSort (1,30000);
END.

sorrki za objetosc...
pozdroowka dla forumowiczow - &y

0

Czy nazwa QuickSort oznacza ze jest to najszybszy znany sposob sortowania?--Pawel

Delphi6

0

Czy nazwa QuickSort oznacza ze jest to najszybszy znany sposob sortowania?
&gt
&gt--

Tak, jeden z najszybszych.--Pozdrawiam!
Adam Boduch
www.4programmers.net

1 użytkowników online, w tym zalogowanych: 0, gości: 1