|
Страници по тази тема: 1 | 2 | 3 | (покажи всички)
Тема
|
Въпросче на начинаещ
|
|
Автор | вeceляk (Нерегистриран) |
Публикувано | 06.03.03 00:31 |
|
Най-малкото искам да ви досаждам с тъпи аматьорски въпросчета, ама сега ми е наложително. Просто имам малък проблем в училище с Pascal. Дадоха ни при въведени три числа да бъдат подредени по големина - хубаво (и лесно), дадоха ни и с четири и с повече, ама като ми казаха девет и на мен вече ми омръзна, защото единствения начин да го направя със досегашните си знания е да сравнявам поотделно числата докато установя как да бъдат наредени и си викам, че не може да няма по-лесен начин. Попринцип го чаткам езика и то повечко отколкото ни учат, ама за това не знам дали има друг начин та затова прибегнах до този клуб.
Ако някой може да ме светне става ли по друг начин и как точно? Благодаря предварително!
| |
|
Ето ти едно елементарно решение:
Направи си един масив с фиксирана големина примерно 500-600. Обяви си една променлива която е броят на числата които трябва да се въведат и сортират. Първо искай от потребителя да въведе броя на числата (за да инициализираш променливата), после да въведе самите числа. Така програмата ти става универсална. След това сортираш по един от стандартните методи - мехурчето е най-лесно.
После можеш да дадеш на даскалката си да тества с 600 числа примерно. 
Мечтата е мисъл, мисълта е идея, всяка идея се реализира. Аз не мечтая, а реализирам идеите си.
| |
Тема
|
не му обясни какво е това мехурче :)))
[re: Duncan Griffin]
|
|
Автор | zaphod (Нерегистриран) |
Публикувано | 06.03.03 08:30 |
|
значи щом сравнява на ръка, значи за мехурче не е чувал.
и така, идеята не мехурчето е да се сравняват последователно всички съседни елементи в масива, и ако не са наредени вярно да се сменят. аз ползвам лека модификация при която се сравняват не съседни елементи, а текущия с първия ненареден. така при първия пас намираш най-малкия(големия) и той отива в началото, на втория пас намираш следващия най-голям и той отива на втора позиция и т.н.т.
for i:=1 to n-1
for j:=i+1 to n
if a>a[j] then
begin
h=a;
a=a[j];
a[j]=h;
end
| |
Тема
|
Re: не му обясни какво е това мехурче :)))
[re: zaphod]
|
|
Автор |
ro6avia (mnogo ro6avia) |
Публикувано | 06.03.03 08:55 |
|
be az paskal ne znam ama niama li niakoia funkciika deto da ti narezda masiva po niakoi ot zelanite ot teb na4ini ?
az li4no ne bih polzval metoda na mehur4etata (sega) a bih izsipal 4islata v edna baza danni ako niamam array_sort i 6te si gi drapna posle order by value asc :-)
E tuk ni6to niama :
| |
Тема
|
Re: Въпросче на начинаещ
[re: вeceляk]
|
|
Автор | вeceляk (Нерегистриран) |
Публикувано | 06.03.03 09:40 |
|
А може ли малко по подробно да го кажете така като за дебил като мене. Схванах основната идея, ама не съм много сигурен, че знам как точно да го направя. Също не ми стана много ясно как става това (не се смейте моля) първо да бъде въведен броя на числата и после самите числа.
Пак Ви благодаря много за бързия отговор!
| |
Тема
|
Re: не му обясни какво е това мехурче :)))
[re: ro6avia]
|
|
Автор | NATO (Нерегистриран) |
Публикувано | 06.03.03 09:52 |
|
A moje i predi tova da hacknesh amerikanskata stancija deto ja pratiha v oribita na Mars - tam sigurno sha ima njakoja baza danni, deto shta ti gi sortira
Mi to signala stiga dotam za ima-njama 20 minuti ... i obratno oshte tolkoz - za okolo 1 chas shte si sortiral 3 chisla ... :)))
bubble sort e naj-prost i e naj-efektiven za masivi do 500 elementa ...
veche pri po-golemi e razumno da se izpolzva tejkata artilerija (quick sort, heap sort i t.n.)
| |
Тема
|
Re: Въпросче на начинаещ
[re: вeceляk]
|
|
Автор | Frost (Нерегистриран) |
Публикувано | 06.03.03 10:10 |
|
Search: "sorting algorithms"
След това четеш и си избираш най-подходящото решение. За начало ти препоръчвам да обърнеш внимание на простите алгоритми - bubble sort (метод на мехурчето), selection sort (метод на пряката селекция), insertion sort (метод на вмъкването).
| |
Тема
|
Re: не му обясни какво е това мехурче :)))
[re: NATO]
|
|
Автор |
gruhal ((l)user) |
Публикувано | 06.03.03 10:16 |
|
bubble sort e naj-prost i e naj-efektiven za masivi do 500 elementa ...
veche pri po-golemi e razumno da se izpolzva tejkata artilerija (quick sort, heap sort i t.n.)
aha, ne biah chuwal che 500^2 e po-dobre ot 500*log(500)
| |
Тема
|
Re: Въпросче на начинаещ
[re: вeceляk]
|
|
Автор | Eмил (Нерегистриран) |
Публикувано | 06.03.03 10:17 |
|
Ето ти едно решение. Не е идеално,
но ще видиш идеята.
program Sort;
var
masiv:array[1..100] of integer;
Broj,i,razmeni:integer;
FlagImaLiSort:boolean;
begin
Write('Broj:');Readln(Broj);
for i:=1 to Broj do
begin
Write('Input ',i,' number ');Readln(masiv[ i ]);
end;
FlagImaLiSort:=true;
while FlagImaLiSort do
begin
FlagImaLiSort:=false;
for i:=1 to Broj-1 do
if masiv [ i ] > masiv [ i+1 ] then
begin
razmeni:=masiv[ i ];
masiv[ i ]:=masiv[ i+1 ];
masiv[ i+1 ]:=razmeni;
FlagImaLiSort:=true;
end;
end;
for i:=1 to Broj do Writeln(masiv [ i ] );
end.
| |
Тема
|
Re: не му обясни какво е това мехурче :)))
[re: zaphod]
|
|
Автор |
Colombino (Компетент) |
Публикувано | 06.03.03 10:19 |
|
Първо една забележка: като постваш код го слагай в таг 'пре', щото иначе става боза. Освен това за всеки случай не ползвай i, щото тоя таг не работи добре нещо. На времето работеше.
Второ това дето си го написал не е 'мехурче', а 'пряка селекция' - най-лесният и естествен алгоритъм за сортиране. Мехурчето просто има много атрактивно име, затова е популярно.
for ii:=1 to n-1
for j:=i+1 to n
if a[ii]>a[j] then
begin
h=a[ii];
a[ii]=a[j];
a[j]=h;
end
System Doctor Error:
Your girlfriend is pregnant.
(A)bort, (M)arry, (I)gnore?_
| |
|
Страници по тази тема: 1 | 2 | 3 | (покажи всички)
|
|
|