Download as doc, pdf, or txt
Download as doc, pdf, or txt
You are on page 1of 10

2.1 ki Boyutlu Dizi.

Bir boyutlu dizilerin kullanlmalar problem zerken oldukca yararl


olmutur. Bir boyutlu dizilerin baz problemlerin zmnde yetersiz
kalmas iki boyutlu dizilerin kullanmlarn gndeme getirmitir.
atematik!te kullanlan atrisler iki boyutlu diziye iyi bir rnek olarak
"erilebilir. ki boyutlu dizinin elemanlarna ulaabilmek iin iki tane
#arkl indis de$erine gereksinim "ardr. ki boyutlu diziyi matris gibi
yorumlarsak indislerden birisi dizinin satr% di$eri dizinin stun de$erini
gsterir.
2.1.1 &anm.
'enel olarak iki boyutlu bir dizi
"e dizinin bykl$(m)n eklinde belirlenir.
ki boyutlu dizinin tanm% bir boyutlu dizinin tanmndan #arkldr. *nk
tanmda dizinin ikinci boyutuda bulunur. 'enel tanm biraz da+a alrsa
&anm yaplan iki boyutlu dizinin elemanlarnn aklamas ,ekil.2.- de
"erilmitir.
2.1.2 ki Boyutlu Dizinin Bellekte 'sterimi.
ki boyutlu dizinin belle$e yerletirilmesinde izlenecek yol bir boyutlu
dizideki gibi olmaldr. . zaman iki boyutlu dizi ya /atr ncelikli "eya
/utun 0ncelikli olarak belle$e yerletirilmelidir. 1er eleman bellekte bir
kelimelik yer tutan bir boyutlu dizide% dizi elemanlar belle$e
yerletirilirken ilk eleman% 23! gibi bir adrese yerletirildi. /onra
sras ile di$er dizi elemanlarn 2341!% 2342! ... "e 2n! inci eleman!da
234n! ninci bellek gzne yerletirildi. ki boyutlu dizide bu ilem /atr
ncelikli "eya /utun 0ncelikli yaplr. 5ani iki boyutlu dizinin
elemanlarn belle$e yerletirmek iin dizinin satrlar tek tek alnp%
bir boyutlu dizide yaplan ilem uygulanr. Bylece iki boyutlu dizinin
belle$e yerletirilmesi gerekleir. 6$er stun ncelikli yerletirme
,ekil.2.- Bir dizinin tanm "e de$er atanm +ali
0rnekDizi78
1
9:
1
% 8
2
9:
2
;tamsay.
Dizi tipi
2.Boyutun <st /nr
2.Boyutun =lt snr
Dizi =d
1. Boyutun <st /nr
1. Boyutun =lt snr
Dizi0rnek719m%19n;Dizi &ipi eklinde tanmlanr
Dizi=d78
1
9:
1
% 8
2
9:
2
; 7&.2.2; tanmn elde edilir.
dnlrse bu se#er dizinin +er stunu tek tek alnarak bir boyutlu diziye
uygulanan ilemin ayns uygulanarak dizi belle$e yerletirilir. ki
boyutlu bir dizinin belle$e yerletirilmesi aa$daki rneklerde
gsterilmektedir.
0rnek dizinin ad dizi
1
"e dizi >?> elemandan olusun. Dizinin tanmn
&anm yaplan bu dizinin satr elemanlar indis +alinde ,ekil.2.@ deki
gibi gsterilebilir.
Dizi
1
71%1; Dizi
1
72%1; Dizi
1
7>%1;
Dizi
1
71%2; Dizi
1
72%2; Dizi
1
7>%2;
Dizi
1
71%>; Dizi
1
72%>; Dizi
1
7>%>;
/atir 1 /atir 2 /atir >
,ekil.2.@
ki boyutlu bu dizi matris gibi yazlrsa ,elil.2.A!daki matris elde
edilir.
,ekil.2.A deki dizinin stn ncelikli "e satr ncelikli olarak belle$e
yerletirilmi +ali ,ekil.2.B de grlmektedir. Dizinin ilk eleman
bellekte 2i! gibi bir adrese yerleir "e dizinin +er eleman bellekte bir
kelimelik yer tutmaktadr. Di$er elemanlar takip eden adreslere yerleir.
Bu kitapdaki rneklerde iki boyutlu dizinin belle$e yerletirilmesi satr
ncelikli yaplacaktr.Cerilen iki boyutlu dizinin bellekteki balang
adresi belli ise +er+angi bir elemann greceli adresinin nerede oldu$u
bulunabilir. Dizi7?%y; nin bellekte bulundu$u adres D?E1Fn4y4DiE1F 7G.2.H;
#orml ile bulunur. Bu #ormlde yer alan elemanlarn zellikleri
i1%1i412%1i42>%1i
4>1%2i4H2%2i4->%2
i4@1%>i4A2%>i4B>%
>
/tun 0ncelikli
i1%1i411%2i421%>i
4>2%1i4H2%2i4-2%>
i4@>%1i4A>%2i4B>%
>
/atr 0ncelikli
/utun.1
/utun.2
/utun.>
/atr.1
/atr.2
/atr.>
,ekil.2.B.
,ekil.2.A Dizi
1
in matris eklinde gsterimi
/atrlar
stunlar
Dizi
1
719>%19>; Dizi&ipi ,eklinde yaplr.
8
1
I ? I:
1

8
2
I y I:
2

,eklinde olmaldr.
? 9 =ranan elemann satr indisi.
n 9 Bir satrdaki eleman says.
y 9 6lemann stun indis de$eri.
Cerilen #ormln D?E1Fn4y lik blm aranan elemann dizideki ilk elemana
gre kanc eleman oldu$unu belirler. DiE1F ise bellek adresini "erir.
ki boyutlu H?> elemandan oluan 2=! isimli diziinin tanm "e diziye
eleman atanm +ali ,ekil.2.J da% dizinin bellek gsterimi ise ekil.2.1K
da grlmektedir.
[ ]

=
A J @ K
1 2 - H
B J @ >
= tamsay > 9 H%1 9 1 =
,ekil.2.J 2=! isimli dizinin tanm "e "eri atanm +ali.
= dizisinde =7>%H; n bellekteki yerinin bulunmas9
=7>%H; demek 9 =rarnan eleman dizinin >.satr% ile H.stununun kesim
noktasndaki elemandr.
Bir baka deyile > nc satrdaki Hnc elemandr. *nki ?(> y(H dr.
Bu noktada yaplmas gerekenler 9
1. 0nce aranan elemann bulundu$u satrdan nce ka tane satr oldu$u
+esaplanr. Bunun iin aranan elemann bulundu$u satrda 1 karlr. 5ani
D)E1F #orml kullanlr.
A =
,ekil.2.1K 2=! simli Dizinin /atr 0ncelikli .larak Belle$e 5erleimi
=dresndis/atrDe$eri1%11.satr>i411%2@i421%>Ji4>1%HBi4H2%12.satrHi4-2%2-i4@2%>2i4A2%H1i4B>%1>.satrKi4J>%2@i41K>%>Ji411>%HA
Cerilen rnekte )(> dr. Ce aranan de$er >E1(2 dir. 5ani 2 adet satr "ar.
2. 1er satrda ka eleman oldu$u bulunur. Bu de$er dizi tanmndaki ilk
boyuttan alnr bu rnekte H dr.
>. 1nci "e 2nci admlardaki bulunan de$erler arplarak bir de$er elde
edilir. Bu de$er aranan satra kadarki satrlarda ka eleman oldu$unu
gsterir bu rnekte bu de$er B dir.
H. /on olarak =7>%H; deki 2nci rakam olan H de$eri >nc admda bulunan
de$ere eklenir. Ce aranan elemann bellekte balang elemanna gre
kanc eleman oldu$u bulunur. Bu rnekte >nc satrdaki Hnc eleman
aranmaktadr. /onu olarak =7>%H; eleman bellekte D)E1FLn4y (D>E1FLH4H(12
bulunur. Bunun anlam aranan eleman dizinin ilk elemanndan itibaren
bellekteki 12nci eleman dr. lk eleman i gibi bir adreste oldu$undan 12nci
elemanda i411 adresinde bulunur.
Gormlde "erilen "e bir satrdaki eleman saysn "eren 2n! de$eri dizinin
satrnn boyutlar cinsindende yazabiliriz.
:
1
E8
1
41 9 =lt "e st snrlar "erilmi iki boyutlu bir dizinin satr
ncelikli belle$e yerlemesine gore +er+angi bir elemannn bellek adresini
"eren #orml.
2.1.> ki Boyutlu Dizi ile ilgili ilemler.
Ceri yaps olarak tanmlanan dizilerle ok eitli ilemler yaplabilir.
Bunlar diziye "eri okuma% dizide bulunan "erilerin de$erlendirilmesi%
dizideki "erilerin gncelletirilmesi "e dizideki "erilerin silinmesi
ilemleri olarak saylabilir. Bu ilemlerin nasl yapld$ aa$da tek tek
ele alnmakta "e bir rnek zerinde aklanmaktadr.
2.1.>.1 ki Boyutlu Diziye "eri .kuma.
,ekil 2.J de tanm yaplan "e de$er atanan 2=! isimli dizinin
algoritmasn yazalm "e bu ilemlerin nasl yapld$n aklayalm.
=lgoritmann aklamas 9
=dm.1 9 Bu admda algoritmada kullanlacak olan 2=! isimli iki boyutlu
dizi tanmlanmakta "e sat indis de$ikenine ilk de$er atanmaktadr.
=dm.2 9 Bu admda algoritmann satr indisi kontrol edilmekte e$er satr
de$eri > den bykse ilem ak adm.- e ynlendirilmektedir. Bu admda
di$er indis de$ikeni olan sutun de$ikeninede ilk de$er atamas yaplr.
=dm.> 9 Bu admda sutun de$eri kontrol edilmekte. 6$er bir satr bitmi
ise bir sonraki satrn elemanlarnn alnmas iin ilem ak adm 2 ye
ynlendirilir.
D?
1
E1FD:
1
E8
1
41F45
koordinati "erilen satrdaki kolonde$eri
Bir satrdaki eleman says
koordinat "erilen satrdan 1 eksik satr miktarn "erir
=dm.H 9 Bu admda diziye de$er okunmakta "e yeni sutun de$eri iin ilem
ak adm.> e ynlendirilmektedir.
=dm.- 9 Bu adm algoritmann son adm olup bu admn ilenmesi ile
algoritma sonlandrlr.
ki boyutlu dizide +er+angi bir dizi eleman gsterilmek istenirse iki tane
indis de$eri kullanlr. Bunlar sras ile dizinin elemann belirten satr
"e stun de$erleridir. 0rnek Dizi
1
7-%>;% Dizi
1
72%H; gibi.
=lgoritma kiBoyutluDiziyeCeri.ku
MMBu algoritma H?> boyutunda iki boyutlu tamsay tipinde 2=! isimli
diziyi tanmlayarak dizinin eleman de$erlerini "eri ortamndan okur.
=lgoritmada kullanalan 2sat! "e !sut! de$ikenleri% tamsayi
de$ikenler olup dizinin satir% sutun de$erlerini tutmak iin
kullanlan indis de$ikenlerdir. 2sayi! de$ikeni tamsayi tipinde
de$iken olup "eri ortamndan de$er okumakta kullanlr.MM
1. 7lk lemler;
=719H%19>;&amsayN
satOK
2. 7Dizinin /atr Boyutunu Pontrol 6t;
satOsat41N
sutOKN
i# satQ> t+en adm - e gitN
>. 7Dizinin /utun Boyutunu Pontrol 6t;
sutOsut41N
i# sutQH t+en adm 2!ye gitN
H. 7Dizi!ye De$er .ku;
okuDsayFN
=7sut%sat;OsayN
=dm >!e git
-. 7lem Bitir;
Dur.
=lgoritma.2.2
2.1.>.2 ki Boyutlu Dizinin 'nlenmsi.
=lgoritma.2.2 ile ,ekil.2.J daki iki boyutlu dizi tanmland "e diziye
de$er okuma ilemi gerekletirildi. ,imdide dizide "eri gnleme ileminin
nasl yapld$n =lgoritma.2.> ile aklamaya alalm.
=lgoritma.2.>% 2=! isimli dizinin elemanlarn tek tek ziyaret etmekte "e
bu esnada sutunRde$eriIsatrRde$eri olan dizi elemanlarn s#r
yapmaktadr. =lgoritmann =klamas "e kendisi aa$dadr.
=lgoritmann =klamas 9
=dm.1 9 Bu admda H?> buytundaki iki boyutlu dizi tanmlanarak indis
de$ikenlerinden birisi olan sat de$ikenine ilk de$er atanr.
=dm.2 9 Bu admda algoritmann sat indis de$ikeni kontrol edilir. /at
de$eri > den bykse ilem tamamlanmtr. =lgoritmann ilem ak adm.-
e ynlendirilir "e algoritma sonlandrlr.
=dm.> 9Bu admda algoritmanan ikinci indis de$ikeni olan sut de$ikeni
kontrol edilir. /ut de$eri H den bykse bir satrdaki elemanlardan istenen
art sa$layanlar gnlenmitir. Bir sonraki satrdaki elemanlarn
gnlenebilmesi iin algoritmann ilem ak adm.2 ye ynlendirilir.
=dm.H 9 Bu admda algoritmada istenen ilem yaplr. 5ani sutun de$eri
satrdan kkse dizinin o eleman s#r yaplr. lem ak adm.> e
ynlendirilir.
=lgoritma kiBoyutluDizi'nle
MMBu algoritma H?> boyutunda iki boyutlu tamsay tipinde 2=! isimli
diziyi dolar. Bu esnada sutun indisi satr indisinden kk "eya
satr indisine eit olan dizi elemanlarnn de$erini s#r yapar. MM
1. 7lk lemler;
=719H%19>;&amsayN
satOK
2. 7Dizinin /atr Boyutunu Pontrol 6t;
satOsat41N
sutOKN
i# satQ> t+en adm - e gitN
>. 7Dizinin /utun Boyutunu Pontrol 6t;
sutOsut41N
i# sutQH t+en adm 2!ye gitN
H. 7Ceri 'nle;
S# sutIsat t+en =7sut%sat;OKN
=dm >!e git
-. 7lem Bitir;
Dur.
=lgoritma.2.>
Bu algoritma ile iki boyutlu bir dizinin elemanlarnn gnlenmesi yapld.
2.1.>.> ki Boyutlu Dizi 6lemanlarnn De$erlendirilmesi.
ki boyutlu dizi elemanlarnn de$erlendirilmesinin nasl yapld$n bir
rnek zerinde yazaca$mz 2 algoritma ile gsterelim. Da+a nce istanbulun
bir gn boyunca +er saat ba llen scaklk de$erini tutan rne$i >K
gnlk sre iin yapacak olan algoritmay "e gnlk scsklk ortalamas ile
aylk scaklk ortalamasn bulan 2 ayr algoritma ile gsterelim. lk
olarak >K gn boyunca +er gn 2H adet scaklk de$erini okuyup iki boyutlu
dizide saklayan algoritmay "e aklamasn yazalm.
=lgoritma /caklk.ku/akla

=
A J @ K
1 2 - H
B J @ >
=
Dizinin ilk 1ali

=
A K K K
1 2 K K
B J @ K
=
=lgoritma uygulandktan sonra gnlenmi dizi
MMBu algoritma 2H?>K boyutunda iki boyutlu tamsay tipinde 2Ss!
isimli diziyi tanmlayarak istanbulun >K gn boyunca +er gn +er
saat ba llen scaklk de$erini "eri ortamndan okuyup saklayan
bir algoritmadr. =lgoritmada kullanalan 2saat! "e 2'n!
de$ikenleri% tamsayi de$ikenler olup dizinin indis
de$ikenleridir. 2derece! de$ikeni tamsayi tipinde de$iken olup
"eri ortamndan scaklk de$erini kumak iin kullanlr.MM
1. 7lk lemler;
=7192H%19>K;&amsayN
'nOK
2. 7Dizinin 'n Boyutunu Pontrol 6t;
'nO'n41N
saatOKN
i# gnQ>K t+en adm - e gitN
>. 7Dizinin /aat Boyutunu Pontrol 6t;
/aatOsaat41N
i# saatQ2H t+en adm 2!ye gitN
H. 7Dizi!ye De$er .ku;
okuDdereceFN
Ss7gn%saat;OdereceN
=dm >!e git
-. 7lem Bitir;
Dur.
=lgoritma.2.2
,imdi 'nlk "e aylk scaklk ortalamasn bulacak olan algoritmay
yazalm "e ilem admlarnn aklamasn yapalm. =d geen algoritmann
aklamas "e algoritmann kendisi aa$dadr.
=dm.1 9 Bu admda ilk ilemler olarak Dizi tanmlanr "e de$ikenlere ilk
de$erler "erilir.
=dm.2 9 Bu admda dizinin gn boyutu kontrol edilir. 6$er >K gn dolmu
ise aylk ortalama +esaplanarak yazdrlr "e ilemin tamamlanmas iin
ilem ak algoritmann son komutuna ynlendirilri.
=dm.> 9Bu admda dizinin saat boyutu kontrol edilir. 6$er saat 2H den
bykse gnlk scaklk ortalamas +esaplanr "e yazdrlr. 'nlk
scaklk ortalamas sonra kullanlmak zere aylk scaklk ortalamasn
bulunmas iin ona eklenir. 'nlk scaklk ortalamas yazdrlarak ilem
ak adm.2 ye ynlendirilir.
=dm. H9 Bu admda 'nlk ortalamann +esaplanmas iin gnlk scaklk
de$erleri toplanr.
=dm.- 9 Bu adm algoritmann son adm olup bu admda ilem sonlandrlr.
=lgoritma kiBoyutluDiziDe$erlendir.
MMBu algoritma 2H?>K boyutunda iki boyutlu tamsay tipinde 2Ss!
isimli dizide bulunan istanbulun +ergn 2H saat boyunca saat banda
llm olan bir ayl scaklk de$erlerini kullanarak istanbulun
gnlk "e aylk scaklk ortalamasn +esaplar. =lgoritmada
kullanalan 2saat! "e 2'n! de$ikenleri% tamsayi de$ikenler olup
dizinin indis de$ikenleridir. 2'ort! de$ikeni gnlk scaklk
ortalamasn% 2=ort! de$ikeni ise aylk scaklk ortalamasn tutan
de$ikendir.MM
1. 7lk lemler;
=7192H%19>K;&amsayN
'nOK
'ortOK
=ortOK
2. 7Dizinin 'n Boyutunu Pontrol 6t;
'nO'n41N
saatOKN
i# gnQ>K t+en adm begin
=ortO=ortM>K
5azD=ortFN
=dm - e gitN
6ndN
>. 7Dizinin /aat Boyutunu Pontrol 6t;
/aatOsaat41N
i# saatQ2H t+en begin
'ortO'ortM2HN
5azD'ortFN
=ortO=ort4'ortN
'ortOKN
adm 2!ye gitN
durN
H. 7'nlk s topla;
'ortO 'ort47gn%saat;N
=dm >!e git
-. 7lem Bitir;
Dur.
=lgoritma.2.2
1eriki algoritmann yaptklarn yapan pascal program aa$dadr.
Trogram sN
Car
D71..>K%1..2H; o# integerN
Trocedure salN
Begin
Gor gun9(1 to >K do
Gor saat9(1 to 2H do readDdDsaat%gunFFN
6ndN
Trocedure sde$erlendirN
Begin
.rta9(KN
Gor gun9(1 to >K do Begin
.rtg9(KN
Gor saat9(1 to 2H do
ortg9(ortg4d7saat%gun;N
UriteD2'nlk .rtalama s (!%ortgM2HFN
.rta9(orta4ortgN
6ndN
UriteD2=ylk .rtalama (!%ortaM>KFN
6ndN
Begin
SsalN
Ssde$erlendirN
6nd.
V include Wiostream.+Q
"oid salDFX
int degerN
#or D
int i(1NiW>KNi44FX
#or Dint Y(1%YW2HNi44FX
cinQQdegerN
D7i;7Y;99degerN
Z
Z
"oid sdegerlendirDFX
int ortaDKFN
#or Dint gun(1NgunW>KNgun44FX
int ortgDKFN
#or Dint saat(1NsaatW2H%saat44FX
ortg(ortg4d7saat%gun;N
coutWW['nlk .rtalama s([WWortgM2HN
orta(orta4ortgN
coutWW[=ylk .rtalama s([WWortaM>KN
Z
Z
int mainDFX
salDFN
sdegerlendirDFN
return KN
Z

You might also like