"DatormÄcÄ«ba. Skaitlisko aprÄÄ·inu realizÄcijas metodes ...
"DatormÄcÄ«ba. Skaitlisko aprÄÄ·inu realizÄcijas metodes ...
"DatormÄcÄ«ba. Skaitlisko aprÄÄ·inu realizÄcijas metodes ...
Create successful ePaper yourself
Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.
for j:=1 to i-1 do<br />
begin a:=a+1;<br />
if M[j+1]>M[j] then<br />
begin<br />
buf:=M[j];<br />
M[j]:=M[j+1];<br />
M[j+1]:=buf; end; end; end;<br />
for k:=1 to n do<br />
write(' ',M[k]);<br />
writeln(' ir veiktas',a, ' iteracijas');<br />
end.<br />
ņa}<br />
{salīdzina i-to elementu ar nepārbaudītās<br />
masīva daļas elementiem}<br />
{ja atrasts elements, kurš ir lielāks par i-to<br />
elementu, tos maina vietām}<br />
Programmas algoritms paredz ciklisku visu elementu no pēdējā līdz otram caurskati un<br />
pārvietošanu pa kreisi, ja „kaimiņam” ir mazāka vērtība. Pēc katra cikla soļa caurskatāmās<br />
masīva daļas garums samazinās par vienu.<br />
Dotā masīva sakārtošanai ar „burbuļu” metodi ir nepieciešams veikt 45 iterācijas.<br />
Abas iepriekš analizētās masīvu sakārtošanas <strong>metodes</strong> uzskatāmas par vienkāršām, bet<br />
arī maz efektīvām. Daudz efektīgāka ir metode, kuras pamatā ir masīva sadalīšanas<br />
princips atsevišķās daļās un elementu apmaiņa starp šīm daļām. Metodes algoritms ir<br />
visai sarežģīts un tādēļ attiecīgo programmu šī kursa apjomā nerekomendējam.<br />
Meklēšana nesakārtotā masīvā ir visai darbietilpīga, jo pamatojas uz visu elementu<br />
caurskati un salīdzināšanu ar uzdoto vērtību („atslēgu”) līdz situācijai, kad salīdzināšanas<br />
rezultāts dod vērtību true. Apstrādājot liela apjoma informāciju parasti vispirms<br />
attiecīgo informācijas masīvu sakārto un pēc tam veic nepieciešamā elementa meklēšanu.<br />
Viena no meklēšanas efektīvām metodēm ir „dalīšanas uz pusēm” metode.<br />
Metodes ideja – sakārtotu masīvu dala uz pusēm un pēc masīva vidējā elementa vērtības<br />
nosaka, kurā masīva daļā atrodas meklējamais elements. Nevajadzīgo masīva daļu<br />
atmet un attiecīgo algoritmu atkārto ar atlikušo masīva daļu. Dalīšanu atkārto tik ilgi,<br />
līdz masīva daļa sastāvēs tikai no viena elementa.<br />
Šādu algoritmu realizē programma:<br />
program dala;<br />
const n=20;<br />
M:array[1..n] of byte<br />
=(20,20,19,19,19,18,17,17,12,12,11,10,9,9,5,5, 3, 3, 2, 1);<br />
var atsl,i,pirm,ped:byte;<br />
a: integer;<br />
rez: boolean;<br />
42