Maǵlıwmatlar strukturası hám algoritmler
.pdf
maǵlıwmatlar giltinen ibarat, biraq bul giltler tiykarǵı kesteden anıq bir interval arqalı alınǵan. (2- sızılma).
Basında berilgen argument boyınsha izbe-iz izlew indeksler kestesinen ámelge asırıladı. Qashan, biz berilgen giltten kishi giltti anıqlaǵanımızda, tiykarǵı kestede izlewdiń tómengi shegarasın ornatamız - low, keyin bolsa joqarǵı shegaranı - hi, yaǵnıy ( kind > key ).
Máselen, key = 101.
Izlew tolıq keste boyınsha emes, bálkim low dan hi ge shekem dawam etedi.
2- Sızılma.
Programmaǵa mısal:
Paskal:
i:=1;
while (i <= m) and (kind[i] <= key) do i=i+1;
if i = 1 then low:=1 else low:=pind[i-1]; if i = m+1 then hi:=n else hi:=pind[i]-1; for j:=low to hi do
if key = k[j] then begin search:=j;
exit;
end;
search:=0;
exit;
3. Izbe-iz izlewdiń effektivligi
Qálegen izlewdiń effektivligi kestedegi maǵlıwmatlardıń giltleri menen salıstırıw sanı – S penen bahalanıwı múmkin. Eger salıstırıwlar sanı qansha kishi bolsa, izlew algoritmi effektivligi sonsha jaqsı boladı.
Massivte izbe-iz izlewdiń effektivligi tómendegishe boladı:
C = 1 n, C = (n + 1)/2.
Ulıwma alǵanda dizimde de effektivlik joqarıdaǵıday boladı. Massivte de baylanısqan dizimde de izlew effektivligi bir qıylı bolsada, maǵlıwmatlardı massiv hám dizim kóriniste súwretlewdiń ózine tán kemshilik hám artıqmashlıqları bar. Izlewdiń maqseti - tómendegi prosesslerdiń orınlanıwınan ibarat:
1)Tabılǵan jazıwdı oqıw.
2)Izlenip atırǵan jazıw tabılmasa, onı kestege qosıw.
3)Tabılǵan jazıwdı óshiriw.
41
Birinshi prosess (izlewdiń ózi) massiv ushın da dizim ushın da bir qıylı boladı. Ekinshi hám úshinshi prosesste bolsa izlew dizimli strukturada effektivrek boladı (sebebi massivte elementlerdi jıljıtıw kerek).
Eger k massivte elementlerdi jıljıtıwlar sanı bolsa, ol jaǵdayda k = (n + 1)/2
boladı.
4. Indeksli izbe-iz izlewdiń effektivligi
Eger bolıwı múmkin bolǵan barlıq jaǵdaylar teń itimallı dep alınsa, ol jaǵdayda izlew effektivligin tómendegishe esaplaw múmkin:
Belgilewlerdi kiritip alamız: m – indeks ólshemi; m = n / p; p – adım ólshemi
Q = (m+1)/2 + (p+1)/2 = (n/p+1)/2 + (p+1)/2 = n/2p+p/2+1 (*)
Q dı p boyınsha differensiallap onı nolge teńlestiremiz: dQ/dp=(d/dp) (n/2p+p/2+1)= - n / 2 p2 + 1/2 = 0
Bul jerden
p2=n ; popt 
n
(*) ańlatpada r ornına ropt dı qoyıp tómendegi salıstırıwlar sanın alamız: Q = 
n +1
|
|
|
Demek, indeksli izbe-iz izlewdiń effektivligi tártibi O ( |
n ) boladı. |
|
5. Izlewdi jetilistiriw usılları
Ulıwma alǵanda, kestede hár bir elementti izlew itimallıǵın qandayda bir mánis penen túsindiriw múmkin. Kestede izlenip atırǵan element bar dep oylayıq. Ol jaǵdayda izlew ámelge asırılıp atırǵan barlıq kesteni diskret jaǵdayǵa iye sistema sıpatında qaraw múmkin hámde onda izlenip atırǵan elementti tabıw itimallıǵı – bul sistema i-shi jaǵdayınıń itimallıǵın p(i) dep alıw múmkin.
n
p(i) 1
i 1
Kesteni diskret sistema sıpatında qaraǵanımızda, ondaǵı salıstırıwlar sanı diskrettosınarlı muǵdarlar mánisleriniń matematikalıq kútilmesin ańlatadı.
Z=Q=1p(1)+2p(2)+3p(3)+…+np(n)
Ilajı barınsha p(1) p(2) p(3) … p(n) bolsa, maqsadke muwapıq boladı.
Bul shárt salıstırıwlar sanın kemeytip, effektivlikti asıradı. Sebebi, izbe-iz izlew birinshi elementten baslanǵanlıǵı ushın eń kóp múráját qılınatuǵın elementti birinshisine qosıw kerek.
Izlew kestesin qayta tártiplestiriwdiń e ń kóp isletiletuǵın e ki usılı bar. Olardı bir baǵıtlı dizimler mısalında kórip shıǵamız.
6. Tabılǵan elementti dizim basına qosıw arqalı kesteni qayta tártiplestiriw
Usı usıldıń mánisi sonnan ibarat, berilgen giltke teń giltli element dizimde birinshi element dep ózlestiriledi, qolǵanları bolsa keyige súriledi.
Keltirilgen algoritm dizim ushın da massiv ushın da orınlı. Biraq bul algoritm massiv ushın usınılmaydı, sebebi elementlerdi jaylastırıw kórsetkishlerdi jaylasıtırıwdan kóre bir qansha kóp waqıt talap etedi.
Dizimdi qayta tártiplestiriw algoritmi:
42
Paskal:
q:=nil;
p:=table;
while (p <> nil) do begin
if key = p^.k then begin
if q = nil
then 'jaylastırıw shárt emes' search := p;
exit;
end;
q^.nxt := p^.nxt; p^.nxt := table; table := p;
exit;
end; q := p;
p := p^.nxt; end;
search := nil; exit;
7.Transpozisiya usılı
Usı usılda tabılǵan element dizimde bir aldıńǵı element penen orın almastırıladı. Egerde usı elementke kóp múráját qılınsa, birewden aldınǵa súrilip barıp nátiyjede dizim basında boladı.
Sızılma. Qońsı elementlerdiń ornın almastırıw
r – jumısshı kórsetkish
q – járdemshi kórsetkish, r dan bir adım arqada boladıs - járdemshi kórsetkish, q dan eki adım arqada boladı
Transpozisiya usılı algoritmi:
Paskal:
s:=nil;
q:=nil;
p:=table;
while (p <> nil) do begin
if key = p^.k then ‗transponerleymiz begin
if q = nil then begin
‗jaylastırılmaydı search:=p;
exit;
43
end;
q^.nxt:=p^.nxt;
p^.nxt:=q;
if s = nil then table := p; else
begin
s^.nxt := p;
end;
search:=p;
exit; end; end;
search:=nil; exit;
Usı usıl tek ǵana dizimde, bálkim massivte de qolay (sebebi tek ǵana eki jaqın turǵan element orın almastırıladı).
8. Jetilisken izlew teregi
Eger ajıratıp alınǵan elementler qandayda bir turaqlı toplamdı payda etse, kelesi izlewler effektivrek bolıwı ushın olardı binar terek kórinisinde ańlatıw maqsetke muwapıq bolıwı múmkin.
Tómende keltirilgen tereklerde binar izlewdi kórip shıǵayıq ( a)hám b) sızılma). Eki terekte de úshewden elementke iye - k1, k2, k3 bolıp bul jerde k1<k2<k3. k3 elementti izlew a) sızılmada eki salıstırıwdı talap etse, b) sızılmada bolsa bir salıstırıwdı talap etedi.
Qandayda bir jazıwdı ajıratıp alıw ushın zárúr bolǵan giltlerdi salıstırıwlar sanı binar izlew teregindegi usı jazıw basqıshına birewin qosqanına teń.
Oylayıq:
izlew argumenti key = k1 bolıwı itimallıǵı - p1, izlew argumenti key = k2 bolıwı itimallıǵı – p3, izlew argumenti key = k3 bolıwı itimallıǵı – p3, key < k1 bolıwı itimallıǵı – q0,
k2 > key > k1 bolıwı itimallıǵı – q1, k3 > key > k2 bolıwı itimallıǵı – q2, key > k3 bolıwı itimallıǵı – q3,
C1 - a) sızılmadaǵı salıstırıwlar sanı, C2 - b) sızılmadaǵı salıstırıwlar sanı.
Sızılma a) |
Sızılma b) |
Ol jaǵdayda r1+ r2+ r3+ q0+ q1+ q2+ q3 = 1
Qandayda bir izlewde kútilip atırǵan salıstırıwlar sanı tómendegishe boladı:
C1 = 2 r1+1 r2+2 r3+2 q0+2 q1+2 q2+2 q3
C2 = 2 r1+3 r2+1 r3+2 q0+3 q1+3 q2+1 q3
Qandayda bir berilgen giltler hám itimallıqlar toplamında kútilip atırǵan salıstırıwlar sanın minimallastırıwshı binar izlew teregi jetirisken delinedi. Terek jaratıw algoritmi bir qansha qıyın jumıs bolsada, biraq ol jaratqan terekte izlewdi ámelge asırıw bir qansha effektiv boladı. Tilekke qarsı, kópshilik jaǵdayda, izlew argumenti itimallıǵı aldınnan anıq bolmaydı.
9.Binar izlew (teń ekige bóliw usılı)
44
Oylayıq, ósiw tártibinde tártiplestirilgen sanlar massivi berilgen bolsın. Usı usıldıń tiykarǵı ideyası sonnan ibarat, tosınarlı qandayda bir AM element alınadı hám ol X izlew argumenti menen salıstırıladı. Eger AM=X bolsa, ol jaǵdayda izlew juwmaqlanadı; eger AM <X bolsa, ol jaǵdayda indeksleri M nen kishi yaki teń bolǵan barlıq elementlerdi kelesi izlewden shıǵarıp jiberiledi. Tap sonday, eger AM >X bolsa.
M qálegenshe tańlanǵanda da usınılıp atırǵan algoritm korrekt isleydi. Sol sebepli M di sonday tańlaw kerek, izertlenip atırǵan algoritm effektivrek nátiyje bersin, yaǵnıy onı sonday etip tańlayıq, ilajı barınsha keyingi prosesslerde qatnasıwshı elementler sanı kem bolsın. Eger biz ortasha elementti, yaǵnıy massiv ortashasın tańlasaq sheshim jetilisken boladı.
Tómendegi sızılma kórinisinde berilgen massivti qarap shıǵayıq. Oylayıq, bizden gilti 52 ge teń bolǵan elementti tabıw talap etilsin. Dástlepki salıstırılatuǵın element 49 boladı. 49<52 bolǵanı ushın, keyingi izlew 49 dan joqarıda turǵan elementler arasında ámelge asırıladı. Jańa payda bolǵan massiv ortası 86. Eger berilgen gilt penen usı giltti salıstırsaq 86>52 boladı. Demek, náwbettegi izlewler 86 menen 49 arasındaǵı elementler ishinde ámelge asırılıwı kerek. Keyingi adımda belgili boldadı, kórilip atırǵan elementler ortasındaǵı element gilti 52 ge teń. Solay etip, massivte berilgen giltke teń bolǵan elementti taptıq.
Joqarıdaǵı algoritmdi ámelge asırıw programması Paskal tilinde tómendegishe boladı: Paskalda
low := 1; hi := n;
while (low <= hi) do begin
mid := (low + hi) div 2; if key = k[mid] then begin
search := mid; exit;
end;
if key < k[mid] then hi := mid - 1
else low := mid + 1; end;
search := 0; exit
Eger key = 101 bolsa, kerekli jazıw 3 márte salıstırıwlarda anıqlanadı (izbe-izizlewde salıstırıwlar sanı 7 bolar edi).
Eger S – salıstırıwlar sanı hám n – kestedegi elementler sanı bolsa, ol jaǵdayda
S = log2n.
45
Máselen, n = 1024.
Izbe-iz izlewde S = 512, binar izlewde S = 10.
Eger úlken kólemdegi maǵlıwmatlar ishinde izlew ámelge asırılıp atırǵan bolsa, ol jaǵdayda binar hám indeksli izbe-iz izlewdi ulıwmalastırıp alıp barıw múmkin. Sebebi, hár eki izlew de tártiplestirilgen massivte ámelge asırıladı.
Qadaǵalaw sorawları
1.Izlew wazıypası neden ibarat?
2.Hasıl gilt degende neni túsinesiz?
3.Dizimde berilgen giltli element joq bolǵanda qaysı ámel orınlanadı?
4.Izbe-iz izlew hám indeksli izbe-iz izlewlerdiń parqı neden ibarat?
5.Olardan qaysı biri effektivrek hám ne sebepten?
6.Kesteni qayta tártiplestiriwdiń qanday usılların bilesiz?
7.Tabılǵan elementti basına qosıw usılınıń transpozisiya usılınan tiykarǵı parqlarınelerden ibarat?
8.Usı usıllar maǵlıwmatlar qanday kóriniste berilgende tezireq isleydi?
9.Olar qanday dizimlerde isleydi, yaǵnıy tártiplestirilgen yaki qálegen?
10.Binar izlewdiń mazmunı hám mánisi neden ibarat?
11.Qanday etip binar terekti shetlep ótiw múmkin?
12.Binar izlewdi massivte isletiw múmkinbe?
13.Eger bos bolmaǵan terekte tamır óshiriletuǵın bolsa, ol jaǵdayda onıń ornına qaysıelement ótedi?
46
8-Leksiya. Saralaw (4 saat)
Reje:
1.Saralaw túsinigi, onıń túrleri.
2.Tuwrıdan tuwrı qosıw arqalı saralaw.
3.Tuwrıdan tuwrı tańlaw arqalı saralaw.
4.Tuwrıdan tuwrı almastırıw arqalı saralaw.
5.Saralawdıń jaqsılanan usılları.
Saralaw – bul berilgen toplam elementlerin qandayda bir tártipte jaylastırıw prosessi. Saralawdıń maqseti tártiplestirilgen toplamda kerekli elementti tabıwdı ańsatlastırıwdan ibarat. Saralaw programmalardı translyasiya qılınıp atırǵanda, maǵlıwmatlar jıyındısın sırtqı yadta shólkemlestirilip atırǵanda, kitapxanalar, kataloglar, maǵlıwmatlar bazası jaratılıp atırǵanda paydalanıladı. Bizge belgili, saralawdıń hár túrli algoritmleri bar. Sebebi, bir máseleni saralaw ushın júda kóplegen hár túrli algoritmlerden paydalanıw múmkin. Berilgen máseleni sheshiwde bazıları quramalı bolıwı múmkin. Sonıń ushın saralaw máselesinde algoritmlerdiń salıstırmalı analizin ótkeriw zárúrligi payda boladı.
Saralaw máselesiniń qoyılıwın tómendegishe jazıw múmkin.
Oylayıq, a1, a2 ,…, an, elementler izbe-izligi berilgen bolsın. Ol jaǵdayda saralaw algoritmi elementlerdi massivke sonday etip jaylastıradı, nátiyjede olar qandayda bir qatnasqa salıstırǵanda f(ak1) f(ak2) … f(akn) tártibine iye boladı. Ádette f tártiplestiriw funksiyası qandayda bir arnawlı qaǵıyda menen esaplanbastan, bálkim elementtiń gilt mánisi boyınsha massiv elementleri tártiplestiriledi.
Maǵlıwmatlarǵa qayta islew berilip atırǵanda maǵlıwmattıń informasiyalıq maydanın hámde onıń mashinada jaylasıwın (adresin) biliw zárúr.
Saralawdıń eki túri bar: ishki hám sırtqı:
ishki saralaw bul operativ yadtaǵı saralaw;
sırtqı saralaw – sırtqı yadta saralaw.
Saralaw bul maǵlıwmatlardıń giltleri boyınsha yadta regulyar kóriniste jaylastırıw. Regulyarlıq degende maǵlıwmatlar gilt mánisleri boyınsha massivte basınan aqırına shekem ósiwi yaki kemeyiwi túsiniledi.
Eger saralanıp atırǵan jazıwlar yadta úlken kólemdi iyelese, ol jaǵdayda olardı almastırıwlar úlken sarp (waqıt hám yad mánisinde) talap qıladı. Usı sarplawdı kemeytiw maqsetinde, saralaw giltler adresi kestesinen ámelge asırıladı. Bunda tek ǵana maǵlıwmat kórsetkishleri almastırılıp, massiv óz ornında qaladı. Joqarıdaǵı usıl adresler kestesin saralaw usılı delinedi.
Saralanıp atırǵanda bir qıylı giltler ushırawı múmkin, bul jaǵdayda saralanaǵannan keyin bir qıylı giltliler baslaǵısh tártipte qanday jaylasqan bolsa, usı tártipte qaldırılıwı maqsetke muwapıq boladı (Bir qıylı giltliler ózlerine salıstırǵanda). Bunday usılǵa turaqlı saralaw delinedi.
Saralaw effektivligin bir neshe derekler boyınsha bahalaw múmkin:
saralawǵa ketken waqıt;
saralaw ushın talap qılınǵan operativ yad;
programmanı islep shıǵıwǵa ketken waqıt.
Birinshi derekti qarap shıǵayıq. Saralaw orınlanǵanda salıstırıwlar yakialmastırıwlar sanı esaplaw múmkin.
47
Oylayıq, N = 0,01n2 + 10n – salıstırıwlar sanı. Eger n < 1000 bolsa, ol jaǵdayda ekinshi qosılıwshı úlken, keri jaǵdayda yaǵnıy, n > 1000 bolsa, birinshi qosılıwshı úlken boladı.
Demek, kishkene n lerde salıstırıwlar sanı n ge teń boladı, úlken n larda bolsa n2 qa teń boladı. Saralawda salıstırıwlar sanı tómendegi aralıqlarda boladı:0(n log n)
dan 0 (n2) gacha; 0 (n) – ideal jaǵdayda. Saralawdıń tómendegishe usılları bar:
qatań (tuwrıdan-tuwrı) usıllar;
jaqsılaǵan usıllar.
Qatań usıllar:
1.tuwrıdan-tuwrı qosıw usılı;
2.tuwrıdan-tuwrı tańlaw usılı;
3.tuwrıdan-tuwrı almastırıw usılı.
Joqarıda keltirilgen úsh usılda da almastırıwlar sanı derlik bir qıylı boladı.
Tuwrıdan-tuwrı qosıw usılı menen saralaw
Bunday usıl karta oyınında keń qollanıladı. Elementler (kartalar) qıyalıy ―tayar‖ a(1),...,a(i-1) hám baslaǵısh izbe-izliklerge bólinedi. Hár bir adımda (i=2 den baslanıp, hár bir adımda bir birlikke asırılıp barıladı) baslaǵısh izbe-izlikten i-shi element ajıratıp alınıp tayar izbe-izliktiń kerekli jerine qosıladı.
Usınılıp atırǵan usıldı tómendegi mısalda kórip shıǵamız. Oylayıq, gilt mánisi 4, 5, 3, 8, 1, 7 bolǵan elementler berilgen bolsın.
Kerekli jerdi izlew prosessin tómendegi tártipte alıp barıw qolay boladı. Salıstırıwlar ámelge asırıw barısında, náwbettegi a(j) element penen salıstırıladı, keyin bolsa x bos orınǵa qoyıladı yaki a(j) ońǵa súriledi hám prosess shepke ―ketedi‖. Sonı itibarǵa alıw kerek, saralaw prosessi tómendegi shártlerdi birewi orınlanǵanda juwmaqlanadı:
1.x elementi giltinen kishi giltli a(j) element tabıladı.
2.tayar izbe-izliktiń shep tárepi aqırına jetip barıldı.
Usınılıp atırǵan usıl algoritmi tómendegishe boladı:
Procedure StraightInsertion; Var
i,j:index; x:item; begin
for i:=2 to n do x:=a[i]; a[0]:=x; j:=1;
while x<a[j-1] do a[j]:=a[j-1]; j:=j-1; end; a[j]:=x;
end;
48
end; StraightInsertion
Algoritm effektivligi
Oylayıq, salıstırıwlar sanı S, jaylastırıwlar sanı M bolsın. Eger massivelementleri kemeyiw
tártibinde bolsa, ol jaǵdayda salıstırıwlar sanı e ń úlken bolıp, ol |
|
|
|
Cmax n n 1 ge teń boladı, yaǵnıy O n2 |
. Jaylastırıwlar sanı bolsa M |
max Cmax |
3(n 1) |
2
ge teń boladı, yaǵnıy O n2 . Eger berilgen massiv ósiw tártibinde saralanǵan bolsa, ol jaǵdayda salıstırıwlar hám jaylastırıwlar sanı eń kishi boladı, yaǵnıy Cmin n 1 , M min 3(n 1) .
Tuwrıdan-tuwrı tańlaw usılı menen saralaw Oylayıq, a1, a2,
… , an elementler izbe-izligi berilgen bolsın.Usı usıl tómendegi prinsiplerge tiykarlanǵan:
1.Berilgen elementler ishinen eń kishi giltke iye element tańlanadı.
2.Usı element baslaǵısh izbe-izliktegi birinshi element a1 menen orın almasadı.
3.Onnan keyin usı prosess qalǵan n-1 element, n-2 element hám basqa, bir eń ―úlken‖ element qalǵanǵa shekem dawam ettiriledi.
Usınılap atırǵan usıl algoritmi tómendegishe boladı:Paskal tilndegi programması:
Procedure StraightSelection Var
i,j,k: index; x:item; begin
for i:=1 to n-1 do k:=I; x:=a[i];
for j:=i+1 to n do
if a[j]<x then k:=j; x:=a[k]
end;
end;
a[k]:=a[i];
a[i]:=x
end;
end StraightSelection
Algoritm effektivligi: |
|
|
|
|
||
|
n |
(n 1) |
|
n2 |
n |
|
2 |
|
2 |
|
|||
Salıstırıwlar sanı M = |
|
|
|
|
|
. |
n
Almastırıwlar sanı Cmin = 3(n - 1), Cmax = 3(n - 1)
2
(n2 tártip).
Usı usıl boyınsha saralaw orınlansa, eń jaman jaǵdayda salıstırıwlar hámalmastırıwlar sanı tártibi n2 boladı.
Tuwrıdan-tuwrı almastırıw usılı menen saralaw (kóbikli)
49
Usı usıldıń ideyası tómendegishe: n - 1 márte massivte tómennen joqarıǵa qarap júrip giltler jupjubı menen salıstırıladı. Eger tómengi gilt mánisi joqarıdaǵı jubı giltinen kishi bolsa, ol jaǵdayda olar orın almastırıladı.
Paskal tilindegi programması: for i := 2 to n do
for j := n downto i do if a[j - 1] > a[j] then begin
x := a[j - 1]; a[j - 1] := a[j]; a[j] := x;
end;
Biziń jaǵdayımızda bir ótiw ―biykar‖ boldı. Elementlerdi artıqsha jaylastırmawushın bayraqsha kiritiw múmkin.
Kóbikli usıldıń jaqsılanǵan usılı bul sheyker saralaw usılı bolıp, hár bir ótiwdenkeyin cikl ishinde
baǵdar ózgertiledi. |
|
|
|
|
|
|
|
|
|
Algoritm effektivligi: |
|
|
|
|
|
|
n2 |
||
|
n |
|
|
|
n |
||||
salıstırıwlar sanı M = |
|
|
|
|
|
|
, |
||
|
|
|
|
||||||
2 |
|
|
2 |
|
|
4 |
|
||
|
|
|
|
n2 |
|
|
|||
almastırıwlar sanı Cmax = 3 |
|
|
|
. |
|
|
|||
|
|
4 |
|
|
|||||
|
|
|
|
|
|
|
|||
Saralawdıń jaqsılaǵan usılları Quiksort – tez saralaw usılı
Ideyası: Bul usıl almastırıw usılındaǵı saralawǵa tiyisli bolıp onıń tiykarıngiltlerdi tańlanǵan giltke salıstırmalı ajıratıw quraydı.
6 dan shep tárepte giltleri kishi, oń tárepte bolsa giltleri 6 dan úlken bolǵanelementler jaylastıradı (joqarıdaǵı sızılma).
procedure Sort (L, R: integer);
50
