Třídění – Pascal – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu
Reklama
Reklama

Třídění – Pascal – Fórum – Programujte.comTřídění – Pascal – Fórum – Programujte.com

 

Hledá se programátor! Plat 1 800 € + bonusy (firma Boxmol.com)
Frantisek
~ Anonymní uživatel
32 příspěvků
23. 8. 2007   #1
-
0
-

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ý

Nahlásit jako SPAM
IP: ...–
Reklama
Reklama
Nosko0
Stálý člen
23. 8. 2007   #2
-
0
-

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;

Nahlásit jako SPAM
IP: ...–
Geany
~ Anonymní uživatel
18 příspěvků
23. 8. 2007   #3
-
0
-

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

Nahlásit jako SPAM
IP: ...–
Frantisek
~ Anonymní uživatel
32 příspěvků
23. 8. 2007   #4
-
0
-

To Geany:Hele super, ale nemohl by si me to trosku osvetlit?

Nahlásit jako SPAM
IP: ...–
Frantisek
~ Anonymní uživatel
32 příspěvků
23. 8. 2007   #5
-
0
-

To Geany: Tak jsem to zkousel a uplne se mi to nesetridilo

Nahlásit jako SPAM
IP: ...–
Nosko0
Stálý člen
23. 8. 2007   #6
-
0
-

To Geany:Sry za zmatok :), ten kód som pravdu povediac ani moc nepozeral, dal ujo google(pascal sort), mi tak aspoň v tom momente pripadal(práca s polom, výmena prvkov...)

Nahlásit jako SPAM
IP: ...–
Geany
~ Anonymní uživatel
18 příspěvků
25. 8. 2007   #7
-
0
-

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

Nahlásit jako SPAM
IP: ...–
Mircosoft+1
Věrný člen
26. 8. 2007   #8
-
0
-

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.

Nahlásit jako SPAM
IP: ...–
Chceš-li lepší odpověď, polož lepší otázku.
Moje stránka.
Frantisek
~ Anonymní uživatel
32 příspěvků
27. 8. 2007   #9
-
0
-

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;

Nahlásit jako SPAM
IP: ...–
Mircosoft+1
Věrný člen
27. 8. 2007   #10
-
0
-

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.

Nahlásit jako SPAM
IP: ...–
Chceš-li lepší odpověď, polož lepší otázku.
Moje stránka.
Frantisek
~ Anonymní uživatel
32 příspěvků
28. 8. 2007   #11
-
0
-

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!!!!!!!!

Nahlásit jako SPAM
IP: ...–
tucna0
Návštěvník
29. 8. 2007   #12
-
0
-
Nahlásit jako SPAM
IP: ...–
20. 10. 2007   #13
-
0
-

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.

Nahlásit jako SPAM
IP: ...–
Podpis: Do podpisu nelze vložit obrázky ani HTML kód. Je podporován nový řádek tagem
.
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 32 hostů

Podobná vlákna

Třídění struktury — založil BarBorka

Trideni hudby — založil Halbax

Třídění čísel — založil Kaja

Pole a třídění — založil sXe

Třídění řádků v C — založil lukas011

Moderátoři diskuze

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032016 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý