Dobrý den, dokázal vy mi někdo vysvětlti jákým zbůosobém se třídí pole nebo jak se to udělá? Máme to umět zbůusobem, který se nazývá přímý
Fórum › Pascal
Třídění
Existuje viacero metód ako usporiadať pole.Ináč skús pogoogliť niečo ako
sort array animation
Tu je to inč pekne ukázané
http://math.hws.edu/TMCM/java/labs/xSortLabLab.html
http://www.iste.uni-stuttgart.de/ps/Ploedereder/sorter/sortanimation2.html
A k tomu priamemu spôsobu:
myslím že by to mohlo byť dačo na tento spôsob
For index:=1 TO 9 DO
BEGIN
IF letters[index]>letters[index+1] THEN
BEGIN
temp:=letters[index+1];
letters[index+1]:=letters[index];
letters[index]:=temp;
END;
END;
To Nosko: k tomu kodu -- nedochazi v nem k trideni ;) (vyzkousej si to na posloupnosti cisel, krok po kroku, napr 2 9 3 1 4 5 7 6 10 8)
To Frantisek: k tomu přímému třídění, no myslím si, že by se mohlo jednat o insert sort:
procedure InsertSort(var A: Pole);
var i,j,x: integer;
begin
for i:=2 to N do
begin
x:=A[i];
j:=i-1;
while (j>0) and (x < A[j]) do
begin
A[j+1]:=A[j];
j:=j-1;
end;
A[j+1]:=x;
end
end;
animace -- http://www-cse.uta.edu/~holder/courses/cse2320/lectures/applets/sort1/insertsort.html
To Frantisek: toto by melo byt i otestovany
(pole je indexovany 0..9)
procedure InsertSort(var A: array of integer);
var i,j,x: integer;
begin
for i:=1 to 9 do
begin
x:=A[i];
j:=i-1;
while (j>=0) and (x < A[j]) do
begin
A[j+1]:=A[j];
j:=j-1;
end;
A[j+1]:=x;
end
end;
http://en.wikipedia.org/wiki/Insertion_sort
To Geany:Hele super, ale nemohl by si me to trosku osvetlit?
Začátek:
Máš nesetříděné pole naplněné hodnotami a jedno prázdné pole.
Algoritmus:
Vyjmi z původního pole jednu hodnotu. Třeba jednoduše jednu po druhé od začátku.
Tuto hodnotu vlož do druhého pole (na začátek nebo na konec nebo mezi nějaké dvě hodnoty) tak, aby bylo toto pole stále setříděné .
To celé opakuj pro každou hodnotu z původního pole.
Výsledek:
Ve druhém poli máš setříděné hodnoty.
Místo pomocného pole můžeš setříděné hodnoty strkat na začátek toho původního pole (dosud nesetříděné budou na konci), jak je to v Geanyho příkladu.
Moje stránka.
To Mircosoft: ty jo ja jsem to zkousel a moc mi to neslo, nemohl by si mi prosim naspat co nejjedonusi priklad trideni.....
muj pokus :-(
program Project1;
{$APPTYPE CONSOLE}
uses
SysUtils;
var
i,j,max,a,POM : integer;
P,S : array [1..10] of integer;
begin
randomize;
for i:=1 to 10 do P[i]:=Random(101);
for i:=1 to 10 do write(P[i]:3);
writeln;
writeln;
i:=1;
repeat
Pom:=P[i];
S[i]:=Pom;
max:=P[1];
for a:=i to 10 do
begin
if S[a]>max then max:=S[i];
end;
S[i]:=max;
inc(i);
writeln(max);
until i=10;
Ten tvůj kód je nějaký divný...
Jestli chceš co nejjednodušší příklad, tak to můžeme vyřešit třeba takhle:
program Trideni_insertsortem;
var pole:array[0..9] of integer;
i:byte;
procedure InsertSort(var A: array of integer);
...opis to, co ti napsal Geany o prispevek vyse, fungovat by to snad melo...
BEGIN
{pocatecni omacka:}
randomize;
for i:=0 to 9 do pole[i]:=random(101);
writeln('Nesetridene pole: ');
for i:=0 to 9 do write(pole[i]:3,',');
{vykonna cast programu:}
insertsort(pole);
{zaverecna omacka:}
writeln('Setridene pole: ');
for i:=0 to 9 do write(pole[i]:3,',');
readln;
END.
Nic jednoduššího už mě nenapadá.
Nebo chceš nějaký jednodušší třídicí algoritmus? Pak mi ale budeš muset definovat pojem "přímý způsob třídění", protože terminologie nikdy nebyla moje silná stránka.
Moje stránka.
To Mircosoft:hele diky moc, a ja bych se to chtel jeste naucit, tim zpusobem jak rika....mit dve pole, v jednom plnym najit nejvetsi hodnotu tu ulozi na prvni misto pozice novyho pole a pak zase tohle opakovat..JInak ja taky poradne nevim jak se dela primy trideni. Ja jsem byl na zkousce a tam jsem mel prave setridit pole a v zavorce bylo ze kdyz to udelame primym, tak mame velky plus...
Jinak moc si cenim, ze mi pomahas!!!!!!!!
zkus si pročíst http://ksp.mff.cuni.cz/tasks/18/cook1.html
To Frantisek: Nejsem si jistý, jestli ti pomohu, protože si nejsem jistý, co přesně je "přímé třídění", ale myslím, že je to to, že si vytvoříš proměnnou, nastavíš na nula a pak postupně zvedáš a díváš se, jestli tenhle prvek v poli není a pokud je, tak ho dáš na další pozici v druhém poli (vše je v cyklu for, který je nastaven na 0-maximální číslo v poli). Ale opravdu si nejsem jist, jestli je to ono, já na třídění používám většinou bubble sort.
Přidej příspěvek
Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku
×Vložení zdrojáku
×Vložení obrázku
×Vložení videa
Uživatelé prohlížející si toto vlákno
Podobná vlákna
Trideni hudby — založil Halbax
Třídění čísel — založil Kaja
Třídění zlomků — založil Antonín Smékal
Pole a třídění — založil sXe
Třídění řádků v C — založil lukas011
Moderátoři diskuze