Documente Academic
Documente Profesional
Documente Cultură
(*(h1ø9(56ø7(6ø
0h+(1'ø6/ø.)$.h/7(6ø
%ø/*ø6$<$50h+(1'ø6/øöø%g/h0h
9(5ø<$3,/$5,
DERS NOTLARI
<'Ro'U$\EDUV8ö85
$÷XVWRV
ø=0ø5
<'Ro'U$\EDUV8ö85
ødø1'(.ø/(5
9(5ø<$3,/$5,–*ø5øù .......................................................................... 1
1. C PROGRAMLAMA ............................................................................... 2
2. JAVA PROGRAMLAMA ....................................................................... 8
g=<ø1(/(0(5(&856,21............................................................ 28
$ö$d/$575((6 ............................................................................. 40
<,ö,767$&...................................................................................... 49
6. KUYRUKLAR (QUEUES) .................................................................... 57
7/ø67(/(5YH%$ö/,/ø67(/(5/,NKED LISTS) ........................ 60
$/*25ø70$/$5,1.$5ù,/$ù7,5,/0$6,.................................. 67
9. SIRALAMA ............................................................................................ 72
dø=*(/(5*5$3+6YH8<*8/$0$/$5, ................................ 78
JAVA'DA HAZ,59(5ø<$3,/$5,YH.2/(.6ø<21/$5(....... 81
<'Ro'U$\EDUV8ö85
9(5ø<$3,/$5,*]-2003) *LULú
9(5ø<$3,/$5,–*ø5øù
Algoritma : %LUSUREOHPLQo|]PQGHNXOODQÕODQNRPXWODUGL]LVL%LUSUREOHPL
o|]PHN LoLQ JHOLúWLULOPLú NHVLQ ELU \|QWHPGLU %LU DOJRULWPD ELU SURJUDPODPD
dilinde (Java, C, Pascal gibi) iIDGHHGLOGL÷LQGHprogram DGÕQÕDOÕU
9HUL<DSÕYH$OJRULWPD
%LUSURJUDPGDYHUL\DSÕYHDOJRULWPDELUELULQGHQD\UÕOPD]ELOHúHQOHUGLUYHKHU
biri önemlidir. Verilerin düzHQOHQPH ELoLPOHUL |QHPOLGLU dQN \DSÕ L\L
WDVDUODQGÕ÷ÕQGD HWNLQ GR÷UX DQODúÕOÕU YH KÕ]OÕ oDOÕúÕS D] ND\QDN NXOODQDQ
DOJRULWPDJHOLúWLUPHNNROD\ODúÕU
9HUL7LSOHULQGHQ9HUL<DSÕODUÕQD
Veri Tipleri : 7DPVD\Õ*HUoHO6D\Õ.DUDNWHU
%LOHúLN9HULTipleri : 'L]L<DSÕND\ÕW
9HUL<DSÕODUÕ : /LVWH<Õ÷ÕW.X\UXN$÷DodL]JH
9HUL<DSÕODUÕ7HNUDU
Liste : 6RQOX VD\ÕGD HOHPDQGDQ ROXúDQ YH HOHPDQODUÕ GR÷UXVDO VÕUDGD
\HUOHúWLULOPLúYHUL\DSÕVÕ+HUKDQJLELUHOHPDQÕQDHULúLPGHVÕQÕUODPDyoktur.
<Õ÷ÕW(OHPDQODUÕQDHULúLPVÕQÕUODPDVÕRODQOLVWHX\DUOÕYHUL\DSÕVÕ/,)2OLVWHVL
Kuyruk : (OHPDQODUÕQD HULúLP VÕQÕUODPDVÕ RODQ OLVWH X\DUOÕ YHUL \DSÕVÕ ),)2
listesi.
9HUL<DSÕODUÕ:
• 6WDWLN9HUL<DSÕODUÕ
• 'LQDPLN9HUL<DSÕODUÕ
<'Ro'U$\EDUV8ö85 1
9(5ø<$3,/$5,*]-2003) Bölüm 1 : C Programlama
9(5ø<$3,/$5,'$7$6758&785(6
BÖLÜM 1
&352*5$0/$0$g51(./(5ø
1) %DVLWELU&SURJUDPÕ
#include <stdio.h>
void main()
{
printf("Merhaba \n");
printf("C’ye ");
SULQWI+RúJHOGLQL]\n");
}
2) .XOODQÕFÕGDQLNLWDPVD\ÕLVWH\HUHNEXQODUÕQWRSODPÕQÕoDUSÕPÕQÕIDUNÕQÕE|OPQ
YHE|OPQGHQNDODQÕQÕEXOXSHNUDQD\D]GÕUDQ&SURJUDPÕ
#include <stdio.h>
void main()
{
int tamsayi1, tamsayi2;
int toplam, carpim, fark;
float bolum, bolumg; // double
printf("\QøONWDPVD\Õ\ÕJLULQL]\n");
scanf("%d", &tamsayi1);
SULQWIøNLQFLWDPVD\Õ\ÕJLULQL]\n");
scanf("%d", &tamsayi2);
7DPVD\ÕODUDYHGH÷HUOHULQLYHUHUHNSURJUDPÕoDOÕúWÕUÕQÕ]
<'Ro'U$\EDUV8ö85 2
9(5ø<$3,/$5,*]-2003) Bölüm 1 : C Programlama
3) 6ÕQÕIQRWRUWDODPDVÕQÕEXODQ&SURJUDPÕ-GH÷HULJLULOHQHNDGDUQRWODUÕRNXU
#include <stdio.h>
float ortalama;
int sayac, notu, toplam;
void main()
{
toplam = 0; sayac = 0;
while(notu!=-1)
{
toplam += notu;
++sayac;
printf("\Q1RWXJLULQL]dÕNÕúLoLQ-1): ");
scanf("%d", ¬u);
};
4)
GHQ
DNDGDURODQVD\ÕODUÕQNDUHVLQLEXOXSHNUDQD\D]GÕUDQ&SURJUDPÕNDUH
IRQNVL\RQX\D]ÕODUDNNXOODQÕOPDVÕLVWHQL\RU
#include <stdio.h>
int kare(int);
void main()
{ int x;
for(x=1;x<=10;x++) printf("%d ",kare(x));
printf("\n");
}
int kare(int y)
{
return y*y;
}
<'Ro'U$\EDUV8ö85 3
9(5ø<$3,/$5,*]-2003) Bölüm 1 : C Programlama
5) 6D\ÕODUÕNoNWHQE\÷HGR÷UXVÕUDOD\DQ&SURJUDPÕ%XEEOH6RUW
#include <stdio.h>
#define SIZE 10
void main()
{
int a[SIZE] = { 2,6,4,8,10,12,89,68,45,37 };
int i, pass, hold;
6ÕUDODPDLúOHPLQGHQ|QFHVD\ÕODUÕQHNUDQD\D]GÕUÕOPDVÕ
printf("\Q9HULOHURUMLQDOVÕUDODUÕQGDOLVWHOHQL\RU\n");
for(i=0; i<=SIZE-1; i++)
printf("%4d ",a[i]);
'L]LQLQVÕUDODQPDVÕ
for(pass=1;pass<=SIZE-1;pass++)
for(i=0;i<=SIZE-2;i++)
if(a[i]>a[i+1])
{
hold = a[i];
a[i] = a[i+1];
a[i+1] = hold;
}
6ÕUDODPDLúOHPLQGHQVRQUDVD\ÕODUÕQHNUDQD\D]GÕUÕOPDVÕ
printf("\Q6ÕUDODQPÕúYHULOHUOLVWHOHQL\RU\n");
for(i=0; i<=SIZE-1; i++)
printf("%4d ",a[i]);
printf("\n");
}
3URJUDPÕQHNUDQoÕNWÕVÕ
9HULOHURUMLQDOVÕUDODUÕQGDOLVWHOHQL\RU
2 6 4 8 10 12 89 68 45 37
6ÕUDODQPÕúYHULOHUOLVWHOHQL\RU
2 4 6 8 10 12 37 45 68 89
GH\LPLLOHHOHPDQOÕELUNDUDNWHUGL]LVLROXúXU
<'Ro'U$\EDUV8ö85 4
9(5ø<$3,/$5,*]-2003) Bölüm 1 : C Programlama
#include <stdio.h>
#include <string.h>
void main()
{
FKDUFXPOH>@ DEFoGHIJ÷KÕLMNOPQR|SUVúWX
char tumcumle[26], parca[15];
printf("\n %s %s \n %s %s \n",
"Cümledeki karakterler :", cumle,
"Kopyalanan karakterler :", strcpy(tumcumle, cumle));
strncpy(parca,cumle,14);
parca[14] = '\0';
printf(" Parca karakter dizisi : %s \n", parca);
}
3URJUDPÕQHNUDQoÕNWÕVÕ
&POHGHNLNDUDNWHUOHUDEFoGHIJ÷KÕLMNOPQR|SUVúWX
.RS\DODQDQNDUDNWHUOHUDEFoGHIJ÷KÕLMNOPQR|SUVúWX
Parca karakter dizisi : aEFoGHIJ÷KÕLMN
#include <stdio.h>
#include <string.h>
void main()
{
char s1[] = "C Programlama ";
char s2[] = "Dili";
char s3[40] = "";
3URJUDPÕQHNUDQoÕNWÕVÕ
s1 = C Programlama
s2 = Dili
strcat(s1,s2)=C Programlama Dili
strncat(s3,s1,6) = C Prog
<'Ro'U$\EDUV8ö85 5
9(5ø<$3,/$5,*]-2003) Bölüm 1 : C Programlama
int m[5][3];
Sütunlar
0 1 2
0
6DWÕUODU 1
2
3
4
#include <stdio.h>
void main()
{ int tablo1[2][3] = { {1,2,3}, {4,5,6} },
tablo2[2][3] = { 1,2,3,4,5 },
tablo3[2][3] = { {1,2}, {4} };
printf("Matris1 : \n"); printarray(tablo1);
printf("Matris2 : \n"); printarray(tablo2);
printf("Matris3 : \n"); printarray(tablo3);
}
3URJUDPÕQ(NUDQdÕNWÕVÕ
Matris1 :
1 2 3
4 5 6
Matris2 :
1 2 3
4 5 0
Matris3 :
1 2 0
4 0 0
$/,ù7,50$øNLPDWULVLWRSOD\DQYHoDUSDQ&IRQNVL\RQODUÕQÕHNOH\LQL]
<'Ro'U$\EDUV8ö85 6
9(5ø<$3,/$5,*]-2003) Bölüm 1 : C Programlama
8) 6WULQJ
OHULVÕUDOD\DQ&SURJUDPÕ6HOHFWLRQ6RUW
#include <stdio.h>
#include <conio.h>
#include <string.h>
void main()
{
int i, j, pass, yer;
char veri[5][25] = { "Ali", "Cemil", "Veli", "Abdullah",
"Kemal" };
char enkveri[25], temp[25];
clrscr();
printf("\n");
for(i=0; i<5; ++i) printf("%s ",&veri[i][0]);
printf("\n");
for(i=0; i<5; ++i) printf("%s ",&veri[i][0]);
}
3URJUDPÕQ(NUDQdÕNWÕVÕ
<'Ro'U$\EDUV8ö85 7
9(5ø<$3,/$5,*]-2003) Bölüm 2 : Java Programlama
BÖLÜM 2
JAVA PROGRAMLAMA
• %DVLWELU-DYDSURJUDPÕ
(NUDQD³0HUKDED´\D]GÕUDQ-DYD3URJUDPÕ
// Ornek1.java
public class Ornek1
{
public static void main(String args[])
{
System.out.println("Merhaba");
}
}
3URJUDPÕQ<D]ÕOPDVÕYH'HUOHQPHVL
javac
Ornek1.java Ornek1.class
3URJUDPÕQdDOÕúWÕUÕOPDVÕ
• -DYD2UQHNNRPXWXLOHX\JXODPDoDOÕúWÕUÕOÕU
(NUDQdÕNWÕVÕ
Merhaba
<'Ro'U$\EDUV8ö85 8
9(5ø<$3,/$5,*]-2003) Bölüm 2 : Java Programlama
BÖLÜM 2.1
JAVA PROGRAMLAMA I
øNLWDPVD\Õ\ÕWRSOD\DQPHWRW
class Topla
{
public static void main(String args[])
{
System.out.println(topla(5,6));
}
<'Ro'U$\EDUV8ö85 9
9(5ø<$3,/$5,*]-2003) Bölüm 2 : Java Programlama
gUQHN7DPVD\Õ'|QJ'L]L0HWRWYH(NUDQD<D]GÕUPD
LQWGL]L>@ ^`YH\DEHQ]HUúHNLOGHYHULOHQELUWDPVD\ÕGL]LVLQLQHOHPDQODUÕQÕQ
WRSODPÕQÕEXODQPHWRGXLoHUHQMDYDSURJUDPÕQÕ\D]ÕQÕ]
class DiziTopla
{
class DiziListele
{
public static void main(String args[])
{
String strDizi[] = { "Ali", "Zekiye", "Cemil", "Kemal" };
<'Ro'U$\EDUV8ö85 10
9(5ø<$3,/$5,*]-2003) Bölüm 2 : Java Programlama
9HULOHQELUNLúLDGÕQÕELUGL]LGHDUD\DQYHEXOXQXSEXOXQDPDGÕ÷ÕQÕEHOLUWHQ-DYD
PHWRGXQX\D]ÕQÕ]$UDQDQNLúLQLQ6WULQJDUDQDQ $OLúHNOLQGHYHULOGL÷LQL
varsayabilirsiniz.
class DiziArama
{
NHOLPH <ÕOPD]
if (ara(strDizi,kelime))
System.out.println(kelime+" Dizide Bulundu");
else
6\VWHPRXWSULQWOQNHOLPH'L]LGH%XOXQDPDGÕ
}
return false;
}
}
(NUDQdÕNWÕVÕ
Cemil Dizide Bulundu
<ÕOPD]'L]LGH%XOXQDPDGÕ
<'Ro'U$\EDUV8ö85 11
9(5ø<$3,/$5,*]-2003) Bölüm 2 : Java Programlama
elemanEkle("Ali");
elemanEkle("Cemil");
listele();
}
lük ELUPDWULVROXúWXUDQYHHOHPDQODUÕQÕOLVWHOH\HQ-DYDSURJUDPÕQÕ
Örnek 2.5 : 2 x 4'
\D]ÕQÕ]
class MatrisListele
{
s1 = new String(s);
s2 = new String(s);
System.out.println("s1="+s1+" "+"s2="+s2+"\n");
if(s1.equals(s2))
System.out.println("Her iki string esit");
System.out.println("Uzunluklar :");
System.out.println("Karakter dizisi”+
charArray.length+" karakter");
System.out.println("s1 "+s1.length()+" karakter");
System.out.println("s2 "+s2.length()+" karakter");
}
}
(NUDQoÕNWÕVÕ
s1=Merhaba s2=Merhaba
<'Ro'U$\EDUV8ö85 13
9(5ø<$3,/$5,*]-2003) Bölüm 2 : Java Programlama
(NUDQoÕNWÕVÕ
4
30
fghij
abcdefghijklmnopqrstuvwxyzabcdeABCDEFG
Merhaba
%$6ø7$/,ù7,50$/$5
1) 9HULOHQELULVPLQELU6WULQJGL]LVLQGHNLNDoÕQFÕHOHPDQROGX÷XQXEXODQSURJUDPÕ
\D]ÕQÕ]
2) 9HULOHQELULVPLQELU6WULQJGL]LVLQGHNDoNHUHWHNUDUODQGÕ÷ÕQÕEXODQSURJUDPÕ
\D]ÕQÕ]
3) %LUWDPVD\ÕGL]LVLQGHEHOLUWLOHQELUVD\ÕGDQNoNNDoWDQHVD\ÕROGX÷XQXEXODQ
SURJUDPÕ\D]ÕQÕ]
4) 6ÕUDOÕELUWDPVD\ÕGL]LVLQGHQYHULOHQELUVD\Õ\ÕVLOHQPHWRGX\D]ÕQÕ]
5) 6ÕUDOÕELUGL]L\HYHULOHQELUVD\Õ\ÕHNOH\HQPHWRGX\D]ÕQÕ]
6) Parametre olarak gönderilen iki tane matrisi toplayarak üçüncü matrisi elde eden
PHWRGX\D]ÕQÕ]
7) %LUPDWULVLQVDWÕUODUÕWRSODPÕQÕELUGL]L\HDNWDUDQPHWRGX\D]ÕQÕ]
8) 5DQGRPVD\ÕODUGDQROXúWXUGX÷XQX]HOHPDQOÕELUGL]LQLQoLIWQXPDUDOÕ
HOHPDQODUÕQÕELUPDWULVLQLONVDWÕUÕQDWHNQXPDUDOÕHOHPDQODUÕQÕLNLQFLVDWÕUÕQD
yeUOHúWLUHQ-DYDPHWRGXQX\D]ÕQÕ]
<'Ro'U$\EDUV8ö85 14
9(5ø<$3,/$5,*]-2003) Bölüm 2 : Java Programlama
0HVDMYH*LUGL.XWXODUÕ.XOODQÕPÕ
Örnek 1 :
.XOODQÕFÕGDQLNLWDPVD\ÕLVWH\HUHNEXQODUÕQWRSODPÕQÕoDUSÕPÕQÕIDUNÕQÕE|OPQYH
E|OPQGHQNDODQÕQÕEXOXSVRQXoODUÕ\D]GÕUDQ-DYDSURJUDPÕ
import javax.swing.JOptionPane;
sayi1=JOptionPane.showInputDialog("1.sayiyi veriniz");
sayi2=JOptionPane.showInputDialog("2.sayiyi veriniz");
tamsayi1 = Integer.parseInt(sayi1);
tamsayi2 = Integer.parseInt(sayi2);
toplam = tamsayi1+tamsayi2;
carpim = tamsayi1*tamsayi2;
fark = tamsayi1-tamsayi2;
bolum = tamsayi1/tamsayi2;
kalan = tamsayi1%tamsayi2;
JOptionPane.showMessageDialog(null,
"Toplam = "+toplam+"\nCarpim = "+carpim+"\nFark = "+fark+
"\nTamsayi Bolum = "+bolum+"\nKalan = "+kalan+
"\nBolum = "+(float)tamsayi1/tamsayi2,
"Sonuclar",JOptionPane.PLAIN_MESSAGE);
System.exit(0);
}
}
(NUDQdÕNWÕVÕ0HWLQNXWXODUÕQDVD\ÕLoLQVD\Õ
LoLQGH÷HUOHULJLULOGL÷LQGHROXúDFDNVRQXoODU
<'Ro'U$\EDUV8ö85 15
9(5ø<$3,/$5,*]-2003) Bölüm 2 : Java Programlama
import javax.swing.JOptionPane;
String notStr =
JOptionPane.showInputDialog("Notu giriniz (Exit : -1)");
notu = Integer.parseInt(notStr);
while(notu!=-1) {
toplam += notu; ++sayac;
notStr =
JOptionPane.showInputDialog("Notu giriniz (Exit : -1)");
notu = Integer.parseInt(notStr);
};
String s;
if (sayac==0) s = "Not girilmedi!";
else s = "Sinif ort. = "+(float)toplam/sayac;
JOptionPane.showMessageDialog(null,s,
"Sonuclar",JOptionPane.PLAIN_MESSAGE);
System.exit(0);
}
}
<'Ro'U$\EDUV8ö85 16
9(5ø<$3,/$5,*]-2003) Bölüm 2 : Java Programlama
'L÷HU%LU*8,%LOHúHQL-7H[W$UHD
gUQHN5DQGRPVD\ÕODUUDQGRPMDYD
$OWÕ \]O ELU ]DUÕQ NHUH DWÕOPDVÕ VRQXFX KHU ELU \]Q NDoDU NHUH JHOGL÷LQL
EXODUDNOLVWHOH\HQ-DYD3URJUDPÕ
import javax.swing.*;
<'Ro'U$\EDUV8ö85 17
9(5ø<$3,/$5,*]-2003) Bölüm 2 : Java Programlama
Applet .XOODQÕPÕ
import java.awt.*;
import javax.swing.*;
Container c = getContentPane();
c.add(listelemeAlani);
listelemeAlani.append("n"+"\t"+"kare(n)\n");
<html>
<applet code="Ornek04.class" width=300 height=200>
</applet>
</html>
Java proJUDPÕGHUOHQGLNWHQVRQUDDSSOHW
“appletviewer Ornek04.html”
gUQHN6ÕUDODPD
6D\ÕODUÕNoNWHQE\÷HGR÷UXVÕUDOD\DQ-DYDSURJUDPÕ%XEEOH6RUW
import java.awt.*;
import javax.swing.*;
Container c = getContentPane();
c.add(listelemeAlani);
6ÕUDODPDLúOHPLQGHQ|QFHVD\ÕODUÕQ\D]GÕUÕOPDVÕ
String metin = "Before sorting :\n";
for(int i=0; i<a.length; i++)
metin+=" " + a[i];
'L]LQLQVÕUDODQPDVÕ
bubbleSort(a);
6ÕUDODPDLúOHPLQGHQVRQUDVD\ÕODUÕQ\D]GÕUÕOPDVÕ
metin+="\n\n After sorting (Ascending order) :\n";
for(int i=0; i<a.length; i++)
metin+=" " + a[i];
listelemeAlani.setText(metin);
}
}
<'Ro'U$\EDUV8ö85 19
9(5ø<$3,/$5,*]-2003) Bölüm 2 : Java Programlama
BÖLÜM 2.2
JAVA PROGRAMLAMA II
N(61(<(<g1(/ø.352*5$0/$0$
(OBJECT ORIENTED PROGRAMMING)
JAVA'da SINIFLAR
gUQHN%LU<ROFXVÕQÕIÕ\ROFXQHVQHVL
ROXúWXUXOPDVÕYHNXOODQÕOPDVÕ
class Yolcu {
String ad;
String soyad;
int yasi;
Yolcu() { };
class Ornek_Class {
public static void main(String args[])
{
Yolcu yolcu1 = new Yolcu("Ali","Yilmaz");
yolcu1.yazdir();
}
}
<'Ro'U$\EDUV8ö85 20
9(5ø<$3,/$5,*]-2003) Bölüm 2 : Java Programlama
7(0(/%ø/*øYH7(50ø12/2-ø
6ÕQÕI&ODVVSoyut bir veri tipinin hem verilen tiplerdeki veriler kümesini,
KHPGHEXGH÷HUOHU]HULQGH\DSÕODELOHFHNLúOHPOHUNPHVLQLELUDUD\DJHWLULU
gUQHN<ROFXVÕQÕIÕ
<DSÕFÕmetot
Yolcu(String ad, String soyad)
{
this.ad = ad; this.soyad = soyad;
}
<'Ro'U$\EDUV8ö85 21
9(5ø<$3,/$5,*]-2003) Bölüm 2 : Java Programlama
JAVA'DA VEKTÖRLER
JAVA ÖRNEK 1 :%LUYHNW|UROXúWXUDUDNVÕUD\OD$OL&HPLO.HPDOLVLPOHULQL
HNOH\LQL]9HNW|ULNLúHNLOGHGRODúDUDNIRUHQXPLVLPOHULHNUDna listeleyiniz.
import java.util.*;
class Vektor1
{
public static void main(String args[])
{
final Vector v = new Vector(1);
v.addElement("Ali");
v.addElement("Cemil");
v.addElement("Kemal");
import java.util.*;
class Yolcu
{
String ad;
int yas;
<'Ro'U$\EDUV8ö85 22
9(5ø<$3,/$5,*]-2003) Bölüm 2 : Java Programlama
class Vektor2
{
public static void main(String args[])
{
final Vector v = new Vector(1);
$/,ù7,50$/$5
1) gUQHN
\LYHNW|UHLVPHJ|UHVÕUDOÕRODUDNHOHPDQHNOH\HFHNúHNLOGHGH÷LúWLULQL]
2) gUQHN
\LYHNW|UH\DVDJ|UHVÕUDOÕRODUDNHOHPDQHNOH\HFHNúHNLOGHGH÷LúWLULQL]
3) Örnek 2'de, ismi verilen bir yolcuyu silen metodu ekleyiniz.
4) gUQHN
GH\DúÕYHULOHQELU\ROFX\XVLOHQPHWRGXHNOH\LQL]
5) Örnek 2'de bir yolcunun bilgisini günleyen metodu ekleyiniz.
<'Ro'U$\EDUV8ö85 23
9(5ø<$3,/$5,*]-2003) Bölüm 2 : Java Programlama
import java.util.*;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public vektor()
{
super("Vektor Ornek");
Container c = getContentPane();
c.setLayout(new FlowLayout());
app.addWindowListener
(
new WindowAdapter()
{
public void windowClosing(WindowEvent e)
{
System.exit(0);
}
}
);
}
}
ùHNLO9HNW|USURJUDPÕQÕQSHQFHUHVL
<'Ro'U$\EDUV8ö85 25
9(5ø<$3,/$5,*]-2003) Bölüm 2 : Java Programlama
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public telefon()
{
super("telefon");
c = getContentPane();
c.setLayout(new BorderLayout());
b = new JButton[names.length];
c.add(p1,BorderLayout.CENTER);
c.add(tf1,BorderLayout.NORTH);
setSize(150,150);
show();
}
<'Ro'U$\EDUV8ö85 26
9(5ø<$3,/$5,*]-2003) Bölüm 2 : Java Programlama
<'Ro'U$\EDUV8ö85 27
9(5ø<$3,/$5,*z 2002-2003) Bölüm 3 : Özyineleme
BÖLÜM 3
g=<ø1(/(0(5(&856,ON)
*LULú
.HQGLQLGR÷UXGDQYH\DGROD\OÕRODUDNoD÷ÕUDQIRQNVL\RQODUD|]\LQHOLUHFXUVLYH
IRQNVL\RQODUDGÕYHULOLUg]\LQHOHPHUHFXUVLRQLWHUDV\RQXQG|QJOHUWHNUDU
\HULQH JHoHELOHFHN oRN JoO ELU SURJUDPODPD WHNQL÷LGLU 2ULMLQDO SUREOHPLQ
küçN SDUoDODUÕQÕ o|]PHN LoLQ ELU DOW SURJUDPÕQ NHQGL NHQGLQL oD÷ÕUPDVÕQÕ
VD÷OD\DUDN WHNUDUOÕ LúOHPOHULQ o|]PQH IDUNOÕ ELU EDNÕú DoÕVÕ JHWLULU <HQL
EDúOD\DQ SURJUDPFÕODUD ELU IRQNVL\RQ LoLQGH DWDPD GH\LPLQLQ VD÷ÕQGD
IRQNVL\RQ LVPLQLQ NXOODQÕOPDPDVÕ JHUHNWL÷L V|\OHQPHNOH ELUOLNWH |]\LQHOL
SURJUDPODPDGD IRQNVL\RQ LVPL GR÷UXGDQ YH\D GROD\OÕ RODUDN IRQNVL\RQ LoLQGH
NXOODQÕOÕU
3.2 Örnekler
Örnekler :
0! = 1
1! = 1
5! = 5 * 4 * 3 * 2 * 1 = 120
)DNW|U\HOIRQNVL\RQXQXQWDQÕPÕGHILQLWLRQRIIDFWRULDOIXQFWLRQ
n! = 1 if n==0
n! = n * (n-1) * (n-2) * ... * 1 if n>0
prod = 1;
for(x=n; x>0; x--)
prod *= x;
return prod;
<'Ro'U$\EDUV8ö85 28
9(5ø<$3,/$5,*z 2002-2003) Bölüm 3 : Özyineleme
%|\OH ELU DOJRULWPD WHNUDUOÕ LWHUDWLYH ELU DOJRULWPDGÕU dQN EHOLUOL ELU úDUW
JHUoHNOHúLQFH\HNDGDUVUHQEHOLUJLQELUG|QJYH\DWHNUDUYDUGÕU
)DNW|U\HOIRQNVL\RQXQXQGL÷HUELUWDQÕPÕ
n! = 1 if n==0
n! = n * (n-1)! if n>0
Örnek :
3! = 3 * 2! = 3 * 2 * 1! = 3 * 2 * 1 * 0!
=3*2*1*1
=3*2*1
=3*2
=6
QGH÷HULQLKHVDSOD\DQ&IRQNVL\RQX
Recursive Iterative
int fact(int n) int fact(int n)
{ {
int x,y; int x, prod;
if (n==0) return(1); prod = 1;
x = n-1; for(x=n; x>0; x--)
\ IDFW[
.HQGLQLoD÷ÕUÕ\RU
prod *= x;
return (n*y); return (prod);
} }
Bellek Görünümü :
x )RQNVL\RQ |]\LQHOL RODUDN KHU oD÷UÕOÕúÕQGD \HUHO
fact(3) y
GH÷LúNHQOHU YH SDUDPHWUHOHU LoLQ EHOOHNWHQ \HU D\UÕOÕU
+HUIRQNVL\RQGDQoÕNÕúWDLVHLOJLOLIRQNVL\RQXQHQVRQ
oD÷UÕODQ GH÷LúNHQOHUL LoLQ EHOOHNWHQ D\UÕODQ \HUOHU
x
int fact(int n)
{
return ( (n==0) ? 1 : n * fact(n-1) );
}
int fact(int n)
{
if(n<0)
{ printf(“%s”, “Faktöryel fonksiyonunda negatif parametre!”); exit(1); };
return ( (n==0) ? 1 : n * fact(n-1) );
}
<'Ro'U$\EDUV8ö85 30
9(5ø<$3,/$5,*z 2002-2003) Bölüm 3 : Özyineleme
)LERQDFFL GL]LVL KHU HOHPDQÕ NHQGLQGHQ |QFHNL LNL HOHPDQÕQ WRSODPÕ úHNOLQGH
ifade edilen dizidir :
0. eleman : 0
1. eleman : 1
2. eleman : 0+1 = 1
3. eleman : 1+1 = 2
4. eleman : 1+2 = 3
5. eleman : 2+3 = 5
................................
)LERQDFFLGL]LVLQLQWDQÕPÕ
Örnek hesaplama :
)LERQDFFLGL]LVLQLQQHOHPDQÕQÕQGH÷HULQLEXODQ&IRQNVL\RQX
<'Ro'U$\EDUV8ö85 31
9(5ø<$3,/$5,*z 2002-2003) Bölüm 3 : Özyineleme
binsrch(a,17,0,7);
mid = (0+7)/2 = 3. eleman
a[mid] = 5 => 17>5
binsrch(a,17,4,7);
mid = (4+7)/2 = 5.eleman
a[mid] = 18 => 17<18
binsrch(a,17,4,4);
mid = (4+4)/2 = 4. eleman
a[mid] = 17 => 17==17
return(17); // Bulundu
D YH [ JOREDO GH÷LúNHQ RODUDN WDQÕPODQÕUVD IRQNVL\RQ YH oD÷UÕPÕ úX úHNLOGH
RODFDNWÕU
<'Ro'U$\EDUV8ö85 32
9(5ø<$3,/$5,*z 2002-2003) Bölüm 3 : Özyineleme
ùHNLO+DQRL.XOHVLQLQøON<HUOHúWLULPL
<'Ro'U$\EDUV8ö85 33
9(5ø<$3,/$5,*z 2002-2003) Bölüm 3 : Özyineleme
+DQRL7RZHUV3UREOHPLQLQd|]PYH&3URJUDPÕ+DOLQH*HWLULOPHVL
Önce n diVNLoLQGúQHOLP
• GLVNROXUVDGR÷UXGDQ$¶GDQ&¶\HNRQXODELOLU'R÷UXGDQJ|UO\RU
• (n-1) disk cinsinden çözüm üretebilirsek özyinelemeden yararlanarak n disk
için de çözümü bulabiliriz.
• 4 diskli bir sistemde, kurallara göre en üstteki 3 diski B’ye yeUOHúWLUHELOLUVHN
o|]PNROD\ODúÕU
*HQHOOHúWLULUVHN
1. n==1 => A’dan C’ye diski koy ve bitir.
2. En üstteki n-1 diski A’dan C’den yararlanarak B’ye aktar.
3. Kalan diski A’dan C’ye koy.
4. Kalan n-1 diski A’dan yararlanarak B’den C’ye koy.
Girdi :
GLVNVD\ÕVÕ :n
kuleler : A, B, C (uygun)
dÕNWÕ
GLVNQQQ¶L\\\NXOHVLQGHQDOÕS]]]NXOHVLQH\HUOHúWLU
QQQ GLVN QXPDUDVÕ (Q NoN GLVN QXPDUD HQ NoN VD\Õ ROPDVÕ
GR÷UXGDQ
\\\YH]]]GHNXOHDGÕ
Ana progrDPGDQWRZHUVIRQNVL\RQXQXQoD÷UÕOPDVÕ
void main()
{
int n;
scanf(“ %d” ,&n);
towers(parameters);
}
<'Ro'U$\EDUV8ö85 34
9(5ø<$3,/$5,*z 2002-2003) Bölüm 3 : Özyineleme
ùLPGLSDUDPHWUHOHULEHOLUOHPHDúDPDVÕQDJHOLQGL
#include <stdio.h>
void towers(int, char, char, char);
void main()
{
int n;
scanf(“ %d” ,&n);
towers(n,’ A’ ,’ B’ ,’ C’ );
}
3URJUDPÕQQ GLVNLoLQoDOÕúWÕUÕOPDVÕVRQXFXROXúDQHNUDQoÕNWÕVÕ
GLVNL$NXOHVLQGHQDOÕS&NXOHVLQH\HUOHúWLU
GLVNL$NXOHVLQGHQDOÕS%NXOHVLQH\HUOHúWLU
GLVNL&NXOHVLQGHQDOÕS%NXOHVLQH\HUOHúWLU
3. diVNL$NXOHVLQGHQDOÕS&NXOHVLQH\HUOHúWLU
GLVNL%NXOHVLQGHQDOÕS$NXOHVLQH\HUOHúWLU
GLVNL%NXOHVLQGHQDOÕS&NXOHVLQH\HUOHúWLU
GLVNL$NXOHVLQGHQDOÕS&NXOHVLQH\HUOHúWLU
<'Ro'U$\EDUV8ö85 35
9(5ø<$3,/$5,*z 2002-2003) Bölüm 3 : Özyineleme
List A B C D E
(NUDQdÕNWÕVÕ('&%$
a(parametreler) b(parametreler)
{ {
...... ......
EGH÷HUOHU DGH÷HUOHU
...... ......
} }
<'Ro'U$\EDUV8ö85 36
9(5ø<$3,/$5,*z 2002-2003) Bölüm 3 : Özyineleme
<'Ro'U$\EDUV8ö85 37
9(5ø<$3,/$5,*z 2002-2003) Bölüm 3 : Özyineleme
-$9$
'$g=<ø1(/(0(g51(öø)DNW|U\HO
9HULOHQELUVD\ÕQÕQIDNW|U\HOLQLEXODQPHWRGXLoHUHQ|UQHN
import java.io.*;
class FaktoryelOrnek
{
static int sayi;
<'Ro'U$\EDUV8ö85 38
9(5ø<$3,/$5,*z 2002-2003) Bölüm 3 : Özyineleme
<'Ro'U$\EDUV8ö85 39
9(5ø<$3,/$5,*]-2003) %|OP$ö$d/$5
BÖLÜM 4
$ö$d/$575((6
*LULú
5 5
7 8 7 8
9
9
ùHNLO%LULNLOLD÷DFÕQJUDILNVHOJ|VWHULPOHUL
ùHNLO
GHJ|UOHQD÷DFÕQG÷POHULQGHNLELOJLOHUVD\ÕODUGDQROXúPXúWXU+HU
G÷PGHNLVROYHVD÷ED÷ODU\DUGÕPÕLOHGL÷HUG÷POHUHXODúÕOÕU6ROOHIWSWUYH
VD÷ ULJKWSWU ED÷ODU ERú 18// /" = "\ GD RODELOLU '÷P \DSÕODUÕ
GH÷LúLNWUOHUGHELOJLOHULoHUHQYH\DELUGHQID]ODELOJLLoHUHQD÷DoODUGDRODELOLU
'R÷DGDNLD÷DoODUN|NOHULQGHQJHOLúLSJ|÷HGR÷UX\NVHOLUNHQYHUL\DSÕODUÕQGDNL
D÷DoODUN|N\XNDUÕGD\DSUDNODUÕDúD÷ÕGDRODFDNúHNLOGe çizilirler.
ùHNLO
GHNLD÷Do$G÷PN|NROPDN]HUHG÷PGHQROXúPDNWDGÕU6RO
DOW D÷Do % N|N LOH EDúODPDNWD YH VD÷ DOW D÷Do GD & N|N LOH EDúODPDNWDGÕU
$
GDQVROGD%
\HJLGHQYHVD÷GD&
\HJLGHQLNLGDOEUDQFKoÕNPDNWDGÕU
<'Ro'U$\EDUV8ö85 40
9(5ø<$3,/$5,*]-2003) %|OP$ö$d/$5
A Düzey 0
B C Düzey 1
D E F Düzey 2
G H I Düzey 3
ùHNLO$÷DoODUGDG]H\OHU
7DQÕPODUgUQHNOHUùHNLO
\HJ|UHYHULOPLúWLU
1) øNLOL $÷Do %LQDU\ 7UHH 6RQOX G÷POHU NPHVLGLU %X NPH ERú ELU
NPHRODELOLUHPSW\WUHH%RúGH÷LOVHúXNXUDOODUDX\DU
i) .|NRODUDNDGODQGÕUÕODQ|]HOELUG÷PYDUGÕU
ii) +HUG÷PHQID]ODLNLG÷PHED÷OÕGÕU
iii) .|NKDULoKHUG÷PELUGDOGDQJHOPHNWHGLU
iv) 7PG÷POHUGHQ\XNDUÕGR÷UXoÕNÕOGÕNoDVRQXoWDN|NHXODúÕOÕU
4) Çocuk (child) : %LU G÷PQ VRO YH VD÷ ED÷Õ DUDFÕOÕ÷Õ LOH ED÷ODQGÕ÷Õ
G÷POHURG÷PQoRFXNODUÕGÕUgUQHN%YH&$
QÕQoRFXNODUÕGÕU
5) Parent :%LUG÷PVD÷YHVROED÷ODUÕLOHED÷ODQGÕ÷ÕG÷POHULQSDUHQW
ÕGÕU
$G÷P%YH&G÷POHULQLQSDUHQW
ÕGÕU
6) %LU G÷PQ G]H\ OHYHO YH\D GHULQOL÷L GHSWK %LU G÷PQ N|N
G÷PGHQ RODQ X]DNOÕ÷ÕGÕU gUQHN ' G÷PQQ G]H\L YH\D GHULQOL÷L
2’dir.
7) A÷DFÕQ GHULQOL÷L GHSWK RI WUHH (Q GHULQGHNL \DSUD÷ÕQ GHULQOL÷L YH\D
\NVHNOL÷LKHLJKWgUQHNùHNLO
GHNLD÷DFÕQGHULQOL÷L
WU
<'Ro'U$\EDUV8ö85 41
9(5ø<$3,/$5,*]-2003) %|OP$ö$d/$5
8) Yaprak (leaf) : 6RO YH VD÷ ED÷Õ ERú RODQ G÷POHUH \DSUDN DGÕ YHULOLU
Örnekler : D,G,H,I.
<'Ro'U$\EDUV8ö85 42
9(5ø<$3,/$5,*]-2003) %|OP$ö$d/$5
øNLOL$÷DoODUYHøNLOL$÷DoODUh]HULQGHNL'RODúPDøúOHPOHUL
3) 3RVWRUGHU'RODúPD
i) 6RODOWD÷DFÕSRVWRUGHU
DJ|UHGRODú
ii) 6D÷DOWD÷DFÕSRVWRUGHU
DJ|UHGRODú
iii) .|NHX÷UDYLVLW
A
PreOrder : ABDGCEHIF
B C
InOrder : DGBAHEICF
D F PostOrder : GDBHIEFCA
E
G H I
ùHNLOøNLOL$÷DoYHGH÷LúLNúHNLOOHUGHGRODúÕOPDVÕ
<'Ro'U$\EDUV8ö85 43
9(5ø<$3,/$5,*]-2003) %|OP$ö$d/$5
øNLOL$UDPD$÷DoODUÕ
øNLOL DUDPD D÷DoODUÕ KHU ELU G÷PQ VROXQGDNL VRO DOW D÷DFÕQGDNL WP
G÷POHU NHQGLVLQGHQ NoN VD÷ÕQGDNLOHU VD÷ DOW D÷DFÕQGDNLOHU GH
kendisinden büyN RODFDN úHNLOGH ROXúWXUXOXUODU ùHNLO øNLOL DUDPD
D÷DoODUÕQGDNLHQ|QHPOLLúOHPOHUGHQELULVLDUDPDGÕU
gUQHNRODUDNDúD÷ÕGDNLD÷DoWDVD\ÕVÕQÕDUDWPDNLoLQúXLúOHPVÕUDVÕL]OHQLU
.DUúÕODúWÕUPD LOHNDUúÕODúWÕUÕOÕU
ROGX÷XQGDQVROED÷GDQLOHUOHQLU
.DUúÕODúWÕUPD LOHNDUúÕODúWÕUÕOÕU
!ROGX÷XQGDQVD÷ED÷GDQLOHUOHQLU
.DUúÕODúWÕUPD LOHNDUúÕODúWÕUÕOÕU
!ROGX÷XQGDQVD÷ED÷GDQLOHUOHQLU
.DUúÕODúWÕUPD : 44 == 44.
$UDQDQDQDKWDUGH÷HULD÷DoWa bulundu!
gUQHNRODUDNDúD÷ÕGDNLD÷DoWDVD\ÕVÕQÕDUDWPDNLoLQúXLúOHPVÕUDVÕL]OHQLU
.DUúÕODúWÕUPD LOHNDUúÕODúWÕUÕOÕU
!ROGX÷XQGDQVD÷ED÷GDQLOHUOHQLU
.DUúÕODúWÕUPD LOHNDUúÕODúWÕUÕOÕU
!ROGX÷XQGDQVD÷ED÷GDQLlerlenir.
.DUúÕODúWÕUPD LOHNDUúÕODúWÕUÕOÕU
ROGX÷XQGDQVROED÷GDQLOHUOHQLU
: NULL.
$UDQDQDQDKWDUGH÷HULD÷DoWDEXOXQDPDGÕ
47
25 77
11 43 65 93
7 17 31 44 68
ùHNLOøNLOL$UDPD$÷DFÕ
<'Ro'U$\EDUV8ö85 44
9(5ø<$3,/$5,*]-2003) %|OP$ö$d/$5
'÷PVD\ÕVÕQRODQ&RPSOHWH%LQDU\7UHH
GHGHULQOL÷LKHVDSOD\DELOLUL]
n = 20 + 21 + 22 +... + 2d = 2d+1-1 => n+1 = 2d+1 => d = log2(n+1) - 1’dir.
G÷POELUD÷DoWDG ORJ2(15+1) - 1 = 4-1 = 3' tür.
øNLOLD÷DoODUGDNLGRODúPDLúOHPOHULQLQWPLNLOLDUDPDD÷DoODUÕQGDGDNXOODQÕOÕU
øNLOL DUDPD D÷DoODUÕ ]HULQGH LQRUGHU GRODúÕOGÕ÷ÕQGD WP HOHPDQODU NoNWHQ
E\÷HVÕUDOÕELUúHNLOGHNDUúÕPÕ]DJHOHFHNWLU
øNLOLDUDPDD÷DoODUÕQÕQROXúWXUXOPDVÕLVHúXúHNLOGHGLU+HUKDQJLVÕUDOÕROPD\DQELUVD\ÕGL]LVL
JHOLUNHQKHUELUHOHPDQD÷DFDELU\DSUDNG÷PRODUDNHNOHQLUgUQHNRODUDNVÕUDLOH
VD\ÕODUÕD÷DFDHNOHQPHNLVWHQLUVH
47 : 47 köke eklenir.
25 : 25<47, 47'nin soluna eklenir.
4!
LQVD÷ÕQDHNOHQLU
!
QLQVD÷ÕQDHNOHQLU
!
QLQVROED÷ÕQDHNOHQLU$÷DFÕWDPDPOD\ÕQÕ]
.....
.....
øNLOLDUDPDD÷DoODUÕWHNUDUODUÕ|QOHPHNDoÕVÕQGDQGDROGXNoD\DUDUOÕGÕUODU$÷Do
ROXúWXUXOXUNHQ WHNUDU HGHQ ELU HOHPDQ HNOHQPHN LVWHQGL÷LQGH N|NWHQ LWLEDUHQ
VRODJLWVD÷DJLWNDUDUODUÕLOHRGH÷HULQROGX÷X\HUHKÕ]OÕFDXODúÕODFDNYHD÷DoWD
YHULOHU LoLQGH R GH÷HULQ ]DWHQ ROGX÷X DQODúÕODFDNWÕU %X úHNLOGH WHNUDU HGHQ
YHULOHULQROPDVÕHQJHOOHQLU
%XQODU GÕúÕQGD LNLOL DUDPD D÷DFÕQGDQ G÷P VLOPH LNLOL DUDPD D÷DFÕQÕ LNL
ER\XWOXD÷DoELoLPLQGHHNUDQDoL]GLUPHD÷DFÕG]H\VÕUDVÕQGDGRODúPDG]H\
G]H\VROGDQVD÷DJLELDOJRULWPDODUGD\D]ÕODELOLU$\UÕFDD÷DoG]H\LQLEXOPD
D÷DFDVWULQJGHGDKLOELUoRNELOJLHNOHPHJLELLúOHPOHUGH\DSÕODELOLU
<'Ro'U$\EDUV8ö85 45
9(5ø<$3,/$5,*]-2003) %|OP$ö$d/$5
øNLOL$UDPD$÷DFÕ2OXúWXUPD\ÕYH'RODúPD\Õ6D÷OD\DQ-DYD3URJUDPÕ
'÷P6ÕQÕIÕ
class TreeNode
{
public int data;
public TreeNode leftChild;
public TreeNode rightChild;
public Tree()
{ root = null; }
$÷DFÕQSUH2UGHU'RODúÕOPDVÕ
public void preOrder(TreeNode localRoot)
{
if(localRoot!=null)
{
localRoot.displayNode();
preOrder(localRoot.leftChild);
preOrder(localRoot.rightChild);
}
}
$÷DFÕQLQ2UGHU'RODúÕOPDVÕ
public void inOrder(TreeNode localRoot)
{
if(localRoot!=null)
{
inOrder(localRoot.leftChild);
localRoot.displayNode();
inOrder(localRoot.rightChild);
}
}
<'Ro'U$\EDUV8ö85 46
9(5ø<$3,/$5,*]-2003) %|OP$ö$d/$5
$÷DFÕQSRVW2UGHU'RODúÕOPDVÕ
public void postOrder(TreeNode localRoot)
{
if(localRoot!=null)
{
postOrder(localRoot.leftChild);
postOrder(localRoot.rightChild);
localRoot.displayNode();
}
}
$÷DFDELUG÷PHNOHPH\LVD÷OD\DQPHWRW
public void insert(int newdata)
{
TreeNode newNode = new TreeNode();
newNode.data = newdata;
if(root==null)
root = newNode;
else
{
TreeNode current = root;
TreeNode parent;
while(true)
{
parent = current;
if(newdata<current.data)
{
current = current.leftChild;
if(current==null)
{
parent.leftChild=newNode;
return;
}
} else
{
current = current.rightChild;
if(current==null)
{
parent.rightChild=newNode;
return;
}
}
} // end while
} // end else not root
} // end insert()
} // class Tree
<'Ro'U$\EDUV8ö85 47
9(5ø<$3,/$5,*]-2003) %|OP$ö$d/$5
%LQ7UHH7HVWVÕQÕIÕ
class BinTree
{
public static void main(String args[])
{
Tree theTree = new Tree();
$÷DFDWDQHVD\Õ\HUOHúWLULOPHVL
6\VWHPRXWSULQWOQ6D\ÕODU
for (int i=0;i<10;++i) {
int sayi = (int) (Math.random()*100);
System.out.print(sayi+" ");
theTree.insert(sayi);
};
System.out.print("\Q$÷DFÕQ,Q2UGHU'RODúÕOPDVÕ
theTree.inOrder(theTree.getRoot());
System.out.print("\Q$÷DFÕQ3UH2UGHU'RODúÕOPDVÕ
theTree.preOrder(theTree.getRoot());
System.out.print("\Q$÷DFÕQ3RVW2UGHU'RODúÕOPDVÕ
theTree.postOrder(theTree.getRoot());
}
}
<'Ro'U$\EDUV8ö85 48
9(5ø<$3,/$5,*]-2003) %|OP<,ö,7
BÖLÜM 5
<,ö,767$&.
*LULú
<Õ÷ÕWøúOHPOHULYH7DQÕPODUÕ
push \Õ÷ÕWD HOHPDQ HNOHPH ³SXVKVL´ V \Õ÷ÕWÕQÕQ HQ VWQH L GH÷HULQL
eleman olarak ekler.
pop\Õ÷ÕWWDQHOHPDQoÕNDUPD ³L SRSV´V\Õ÷ÕWÕQÕQHQVWQGHNLHOHPDQÕ
oÕNDUWÕUYHGH÷HULQLLGH÷LúNHQLQHDWDU
empty \Õ÷ÕWÕQ ERú ROXS ROPDGÕ÷ÕQÕ EHOLUOH\HQ LúOHP HPSW\V \Õ÷ÕW ERú LVH
758(GH÷HULQLGH÷LOVH)$/6(GH÷HULQLG|QGUU
stacktop\Õ÷ÕWWDQoÕNDUÕOPDNVÕ]ÕQHQVWWHNLHOHPDQÕQGH÷HULQLG|QGUHQLúOHP
'HQNLúOHPSHHN
i = pop(s);
push(s,i);
7DQÕP Underflow : %Rú \Õ÷ÕW ]HULQGHQ HOHPDQ oÕNDUÕOPD\D YH\D \Õ÷ÕWÕQ HQ
VWQGHNL HOHPDQÕQ GH÷HUL EHOLUOHQPH\H oDOÕúÕOGÕ÷ÕQGD ROXúDQ JHoHUVL] GXUXP
d|]PSRSVYH\DVWDFNWRSV\DSÕOPDGDQHPSW\VNRQWURO\DSÕODUDNERú
bir\Õ÷ÕWROXSROPDGÕ÷ÕEHOLUOHQLU%RúLVHEXLúOHPOHULQ\DSÕOPDVÕHQJHOOHQLU
<Õ÷ÕW.XOODQÕPÕgUQHN
%LU \Õ÷ÕW YH ]HULQGHNL LúOHPOHULQ WDQÕPODQGÕ÷ÕQÕ GúQHOLP øo LoH SDUDQWH]OHU
LoHUHQELULIDGHGHSDUDQWH]OHULQJHoHUOLROPDVÕLoLQ
$oÕODQYHNDSDQDQWRSODPSDUDQWH]VD\ÕVÕHúLWROPDOÕGÕU$o³³YHNDSD³´
SDUDQWH]OHULQHúLWOL÷LQHEDNÕOÕU
.DSDQDQKHUSDUDQWH]GHQ|QFHELUSDUDQWH]DoÕOPÕúROPDOÕGÕU+HU³´LoLQELU
³³ROXSROPDGÕ÷ÕQDEDNÕOÕU
³$%´YH³$%³úDUWDX\PD]
“ )A+B(-C” ve “ (A+B))-&'´úDUWDX\PD]
<'Ro'U$\EDUV8ö85 49
9(5ø<$3,/$5,*]-2003) %|OP<,ö,7
3UREOHPLQ o|]P LoLQ KHU DoÕODQ SDUDQWH]GH ELU JHoHUOLOLN DODQÕ DoÕOÕU YH
NDSDQDQ SDUDQWH]GH GH NDSDQÕU øIDGHQLQ KHUKDQJL ELU QRNWDVÕQGDNL 1HVWLQJ
'HSWKSDUDQWH]GHULQOL÷LRDQDNDGDUDoÕOPÕúIDNDWNDSDQPDPÕúSDUDQWH]Oerin
VD\ÕVÕGÕU øIDGHQLQ KHUKDQJL ELU QRNWDVÕQGDNL SDUDQWH] VD\ÕVÕ ³³ VD\ÕVÕ – “ )”
VD\ÕVÕRODUDNEHOLUWLOHELOLU3DUDQWH]OHULJHoHUOLELULIDGHGHúXúDUWODUROPDOÕGÕU
øIDGHQLQVRQXQGDSDUDQWH]VD\ÕVÕROPDOÕGÕUøIDGHGH\DKLoSDUDQWH]\RNWXU
veyaDoÕODQSDUDQWH]OHULQVD\ÕVÕLOHNDSDQDQSDUDQWH]OHULQVD\ÕVÕHúLWWLU
øIDGHQLQKLoELUQRNWDVÕQGDSDUDQWH]VD\ÕVÕQHJDWLIROPDPDOÕGÕU%XSDUDQWH]
DoÕOPDGDQELUSDUDQWH]LQNDSDQPDGÕ÷ÕQÕJDUDQWLOHU
$úD÷ÕGDNLLIDGHLNLúDUWDGDX\DU
7-((x*((x+y)/(j-3))+y)/(4-2.5))
00122234444334444322211222 2 10
$úD÷ÕGDNLLIDGHúDUWDX\PD]
((A+B)
122221øIDGHVRQXQGDSDUDQWH]DUWWÕGH÷LO
$úD÷ÕGDNLLIDGHúDUWDX\PD]
( A + B ) ) - ( C + D
1 1 1 1 0-1-1 0 0 0 0 (Arada negatif oldu)
<'Ro'U$\EDUV8ö85 50
9(5ø<$3,/$5,*]-2003) %|OP<,ö,7
{x+(y-[a+b])*c-[(d+e)]}/(h-(j-(k-[l-n]))).
e e e çç ee ççç e e e e çççç
[
[ ( .................... (
( ( ( [ [ [ . (
{ { { { { { { { (
ùHNLOøIDGHOHULQSDUDQWH]JHoHUOLOL÷LQLQEHOLUOHQPHVLQGHNXOODQÕODQ\Õ÷ÕW
<Õ÷ÕW$'7¶QLQJ|VWHULPLHOW\SH\Õ÷ÕWÕQHOHPDQODUÕQÕQYHULWLSLROPDN]HUH
-DYD
GD<Õ÷ÕWODU
<Õ÷ÕWÕQGL]LNXOODQÕODUDNJHUoHNOHúWLULPLùHNLO
s ekle(s,7) oÕNDUV
.... .... ....
7 top=3
6 6 6
top=2 top=2
9 9 9
5 5 5
ùHNLOV\Õ÷ÕWÕ]HULQGHHOHPDQHNOHPHYHoÕNDUPDLúOHPOHUL
<'Ro'U$\EDUV8ö85 51
9(5ø<$3,/$5,*]-2003) %|OP<,ö,7
WRS ¶QLQDQODPÕ\Õ÷ÕWWDHOHPDQYDUGÕUYH\Õ÷ÕWÕQHQVWQGHNLHOHPDQ>@¶GLU
%Rú\Õ÷ÕWWDWRS -1’ dir.
Java’ da kDUDNWHU \Õ÷ÕWÕ VÕQÕIÕ ROXúWXUPD YH NXOODQÕPÕQD LOLúNLQ ELU |UQHN úX
úHNLOGHGLU
import java.io.*;
class StackChar
{
private int maxSize;
private char[] stackArray;
private int top;
class Reverse
{
public static void main(String args[])
{
StackChar y = new StackChar(100);
String str = "Merhaba";
for(int i=0; i<str.length(); ++i)
y.push(str.charAt(i));
while(!y.isEmpty()) System.out.println(y.pop());
}
}
<'Ro'U$\EDUV8ö85 52
9(5ø<$3,/$5,*]-2003) %|OP<,ö,7
JaYD
GDKD]ÕU6WDFN\Õ÷ÕWVÕQÕIÕGDEXOXQPDNWDGÕU$úD÷ÕGDNL|UQHNWH6WULQJ
OHU
ROXúWXUXODQV\Õ÷ÕWÕQD\HUOHúWLULOHUHNWHUVVÕUDGDOLVWHOHQPHNWHGLU
import java.util.*;
while(!s.empty()) System.out.println(s.pop());
}
}
<'Ro'U$\EDUV8ö85 53
9(5ø<$3,/$5,*]-2003) %|OP<,ö,7
%XNÕVÕPGDELOJLVD\DUDODQÕQGDNL|QHPOLNRQXODUGDQELULRODQLQIL[SRVWIL[YH
SUHIL[ NDYUDPODUÕ ]HULQGH GXUXODFDN YH EX NDYUDPODUGD \Õ÷ÕW NXOODQÕPÕ
gösterilecektir.
A+B
RSHUDWRULúOHPFL
RSHUDQGVLúOHQHQOHU$%
LQ SUH YH SRVW RSHUDWRU¶Q RSHUDQG¶ODUD J|UH \HULQH NDUúÕOÕN JHOLU ,QIL[
J|VWHULPGH LúOHPFL LúOHQHQOHULQ $% DUDVÕQGD \HU DOÕU 3UHIL[ J|VWHULPGH
LúDUHWoLLúOenenlerden önce gelir, postfix gösterimde de sonra gelir.
A+(B*C) DQODúÕOÕUOÕ÷ÕDUWÕUPDNLoLQSDUDQWH]NXOODQGÕN
A+(BC*) oDUSÕPoHYULOGL
A(BC*)+ toplam çevrildi.
ABC*+ postfix form.
øúOHP|QFHOL÷LE\NWHQNo÷H
Üs alma
Çarpma/Bölme
7RSODPDdÕNDUPD
3DUDQWH]VL] YH D\QÕ |QFHOL÷H VDKLS LúOHPFLOHUGH LúOHPOHU VROGDQ VD÷D GR÷UX
\DSÕOÕUVDOPDKDULohVDOPDGDVD÷GDQVRODGR÷UXGXU$-B+C ‘de öncelik (A-
%& úHNOLQGHGLU $A%A&¶GH LVH $A%A& úHNOLQGHGLU 3DUDQWH]OHU GHIDXOW
|QFHOLNOHULEHOLUWPHNLoLQNRQXOPXúWXU
Dikkat edilecek olunursa, postfix ile prefix ifadeler birbirinin ayna görüntüsü
GH÷LOGLU
3RVWIL[ IRUPGD SDUDQWH] NXOODQÕPÕQD JHUHN \RNWXU øNL LQIL[ LIDGH\L GúQQ
$%
& YH $%
& øON LIDGHGH SDUDQWH] JHUHNVL]GLU øNLQFLGH LON LIDGH LOH
NDUÕúWÕUÕOPDPDVÕ LoLQ JHUHNOLGLU 3RVWIL[ IRUPD oHYLUPHN EX NDUÕúÕNOÕ÷Õ |QOHU
(A+B)*&'¶\L LQIL[ IRUPGD SDUDQWH]VL] LIDGH HWPHN LoLQ oDUSÕP LúOHPL
\DSÕOÕUVDLúOHPVD\ÕVÕoR÷DOÕU
,QIL[ IRUPGDQ SRVWIL[ IRUPD oHYULOHQ ELU LIDGHGH RSHUDQG¶ODUÕQ VD\Õ YH\D
VHPEROED÷OÕROGX÷XRSHUDWRU¶OHUL-
J|UPHN]RUODúÕU
LIDGHVLQLQ
sRQXFXQXQ¶H
LIDGHVLQLQVRQXFXQXQ¶HNDUúÕOÕNJHOGL÷LQLEXOPDN
zor gibi görünür). Fakat parantez kullanmadan tek anlama gelen bir hale
G|QúUøúOHPOHULKHVDSODPDODUÕ\DSPDNNROD\ODúÕU
SRVWIL[LIDGHQLQVRQXFXQXQKHVDSODQPDVÕYHEXQXJHUoHNOHúWLUHQDOJRULWPD
%LU SRVWIL[ VWULQJ¶LQGH KHU RSHUDWRU NHQGLQGHQ |QFH JHOHQ LNL RSHUDQG ]HULQGH LúOHP
\DSDFDNWÕU%XRSHUDQGODUGDKD|QFHNLRSHUDWRU¶OHULQVRQXoODUÕGDRODELOLU%LUDQGDLIDGHGHQ
ELURSHUDQGRNXQDUDN\Õ÷ÕWD\HUOHúWLULOLU%LURSHUDWRU¶HXODúÕOGÕ÷ÕQGD\Õ÷ÕWÕQHQVWQGHNLLNL
HOHPDQ EX RSHUDWRU¶Q RSHUDQG¶ODUÕ RODFDNWÕU øNL HOHPDQ \Õ÷ÕWWDQ oÕNDUÕOÕU LúOHP \DSÕOÕU YH
VRQXoWHNUDU\Õ÷ÕWDNRQXOXU$UWÕNELUVRQUDNLRSHUDWRU¶QRSHUDQG¶ÕROPD\DKD]ÕUGÕU
32 * 56 * +
6 top
2 top 5 30 top
3 6 top 6 6 36 top
6RQLNLHOHPDQ\Õ÷ÕWWDQoÕNDUÕOÕULúOHP\DSÕOÕUVRQXo\Õ÷ÕWD\HUOHúWLULOLU
<'Ro'U$\EDUV8ö85 55
9(5ø<$3,/$5,*]-2003) %|OP<,ö,7
)RQNVL\RQYHPHWRWoD÷UÕPODUÕ
<'Ro'U$\EDUV8ö85 56
9(5ø<$3,/$5,*]02-2003) Bölüm 6 : KUYRUKLAR
BÖLÜM 6
KUYRUKLAR (QUEUES)
*LULú
%XE|OPGHJHUoHN\DúDPGDNLNX\UXNODUÕQELOJLVD\DUGDNLJ|VWHULPOHUL]HULQGH
GXUXODFDNWÕU .X\UXNODU HOHPDQ HNOHPHOHULQ VRQGDQ UHDU YH HOHPDQ
oÕNDUPDODUÕQ EDúWDQ IURQW \DSÕOGÕ÷Õ YHUL \DSÕODUÕGÕU %LU HOHPDQ HNOHQHFH÷L
]DPDQ NX\UX÷XQ VRQXQD HNOHQLU %LU HOHPDQ oÕNDUÕODFD÷Õ ]DPDQ NX\UXNWD
EXOXQDQ LON HOHPDQ oÕNDUÕOÕU %X HOHPDQ GD NX\UXNWDNL HOHPDQODU LoLQGH LON
HNOHQHQHOHPDQGÕU%XQHGHQOHNX\UXNODUD),)2)LUVW-In First-Out = ilk giren
LONoÕNDUOLVWHOHULGHGHQLOPHNWHGLU*HUoHN\DúDPGDGDEDQNDODUGDGXUDNODUGD
JLúHOHUGH VSHUPDUNHWOHUGH RWR\ROODUGD NX\UXNODU ROXúPDNWDGÕU .X\UX÷D LON
RODUDN JLUHQOHU LúOHPOHULQL LON RODUDN WDPDPOD\ÕS NX\UXNWDQ oÕNDUODU 9HUL
\DSÕODUÕQGDNLNX\UXNODUEXWUYHUL\DSÕODUÕQÕQVLPODV\RQXQGDNXOODQÕOPDNWDGÕU
$\UÕFDLúOHPFL\D]ÕFÕGLVNJLELND\QDNODU]HULQGHNLLúOHPOHULQ\UWOPHVLQGH
YH ELOJLVD\DU D÷ODUÕQGD SDNHWOHULQ \|QOHQGLULOPHVLQGH GH NX\UXNODUGDQ
\DUDUODQÕOPDNWDGÕU
.X\UXNøúOHPOHULYH7DQÕPODUÕ
gQFHOLN.X\UX÷X3ULRULW\4XHXH
<Õ÷ÕWODUGDYHNX\UXNODUGDHOHPDQODUHNOHQPHVÕUDVÕQGDGD\DOÕRODUDNVÕUDODQÕUODU
<Õ÷ÕWODUGDLONRODUDNVRQHNOHQHQNX\UXNODUGDLVHLONHNOHQHQHOHPDQoÕNDUÕOÕU
(OHPDQODU DUDVÕQGDNL JHUoHN VÕUDODPD VD\ÕVDO VÕUD YH\D DOIDEHWLN VÕUD JLEL
GLNNDWHDOÕQPD]
<'Ro'U$\EDUV8ö85 57
9(5ø<$3,/$5,*]02-2003) Bölüm 6 : KUYRUKLAR
$UWDQ |QFHOLN NX\UX÷XQGD |QFH HQ NoN HOHPDQ VRQUD LNLnci küçük eleman
VÕUD\ODoÕNDUÕODFD÷ÕQGDQGROD\ÕHOHPDQODUNX\UXNWDQDUWDQVÕUD\ODoÕNPDNWDGÕUODU
%LUNDo HOHPDQ oÕNDUÕOGÕNWDQ VRQUD LVH GDKD NoN ELU HOHPDQ HNOHQLUVH GR÷DO
RODUDN NX\UXNWDQ oÕNDUÕOGÕ÷ÕQGD |QFHNL HOHPDQODUGDQ GDKD NoN ELU HOHPDQ
oÕNPÕúRODFDNWÕU
gQFHOLNNX\UXNODUÕQGDVDGHFHVD\ÕODUYH\DNDUDNWHUOHUGH÷LONDUPDúÕN\DSÕODUGD
RODELOLUgUQHNRODUDNWHOHIRQUHKEHULOLVWHVLVR\DGDGDGUHVYHWHOHIRQQXPDUDVÕ
JLELHOHPDQODUGDQROXúPDNWDGÕUYHVR\DGDJ|UHVÕUDOÕGÕU
gQFHOLNNX\UXNODUÕQGDNLHOHPDQODUÕQVÕUDVÕQÕQHOHPDQODUÕQDODQODUÕQGDQELULVLQH
J|UH ROPDVÕ JHUHNPH] (OHPDQÕQ NX\UX÷D HNOHQPH ]DPDQÕ JLEL HOHPDQODUÕQ
DODQODUÕLOHLOJLOLROPD\DQGÕúVDOELUGH÷HUHJ|UHGHVÕUDOÕRODELOLUOHU
.X\UXN7DVDUÕPÕYH.XOODQÕPÕ
.X\UXNVÕQÕIÕ
class Kuyruk
{
private int boyut;
private int[] kuyrukDizi;
private int bas;
private int son;
private int elemanSayisi;
<DSÕFÕ0HWRW&RQVWUXFWRU
public Kuyruk(int s)
{
boyut = s;
kuyrukDizi = new int[boyut];
bas = 0;
son = -1;
elemanSayisi = 0;
}
<'Ro'U$\EDUV8ö85 58
9(5ø<$3,/$5,*]02-2003) Bölüm 6 : KUYRUKLAR
k.ekle(1);
k.ekle(2);
System.out.println(k.cikar()); // 1
k.ekle(3);
for(int i=4; i<10; ++i)
k.ekle(i);
while(!k.bosMu())
System.out.println(k.cikar());
}
<'Ro'U$\EDUV8ö85 59
9(5ø<$3,/$5,*]-2003) %|OP/LVWHOHUYH%D÷OÕ/LVWHOHU
BÖLÜM 7
/ø67(/(5YH%$ö/,/ø67(/(5/,1.('/,676
7.1 Listeler
/LVWHOHUh]HULQGHNL%D]ÕøúOHPOHUYH7DQÕPODUÕ
.HQGL WLSLQGHNL ELU \DSÕ\Õ J|VWHUHQ ELU LúDUHWoL \HVLQH VDKLS \DSÕODUD VHOI-
UHIHUHQWLDOVWUXFWXUHVDGÕYHULOLUgUQHNRODUDN
struct node {
char info;
struct node *next; };
<'Ro'U$\EDUV8ö85 60
9(5ø<$3,/$5,*]-2003) %|OP/LVWHOHUYH%D÷OÕ/LVWHOHU
\DSÕVÕLQIRDGOÕNDUDNWHUWLSOLELOJLHOHPDQÕQÕQ\DQÕQGDELUG÷P\DSÕVÕQGDELU
EHOOHN E|OJHVLQH LúDUHW HGHQ QH[W LúDUHWoLVLQH VDKLSWLU %X WU \DSÕODUÕQ DUND
DUND\D ELUELULQH ED÷ODQPDVÕ PDQWÕ÷Õ OLVWHOHUGH \Õ÷ÕWODUGD NX\UXNODUGD YH
D÷DoODUGDROGXNoD\DUDUOÕGÕU
/LVWHGHNL KHU G÷PGH ELU VRQUDNL G÷PQ DGUHVLQLQ WXWXOGX÷X YHUL \DSÕVÕ
GR÷UXVDOED÷OÕOLVWHRODUDNDGODQGÕUÕOÕUùHNLO/LVWHQLQKHUELUHOHPDQÕQD
G÷P QRGH DGÕ YHULOLU '÷POHU ELOJL YH ED÷ DGUHV VDKDODUÕQGDQ
ROXúPDNWDGÕUODU %D÷ VDKDODUÕQGD LúDUHWoLOHU NXOODQÕOPDNWDGÕU /LVWHQLQ LON
HOHPDQÕQD GÕúDUÕGDQ ELU LúDUHWoL OLVW LOH HULúLOPHNWHGLU 'L÷HU G÷POHUH GH
ED÷ODU\DUGÕPÕLOHXODúÕODELOPHNWHGLU6RQG÷PQVRQUDNLDGUHVQH[WVDKDVÕ
18//GH÷HULQLLoHULU18//ED÷ÕOLVWHVRQXQXEHOLUWLU(OHPDQÕROPD\DQOLVWH
ERú OLVWH RODUDN DGODQGÕUÕOÕU +HUKDQJL ELU ER\XWD GLQDPLN RODUDN JHQLúOHWLOLS
daraOWÕODELOHQ \Õ÷ÕW YH NX\UXNODUÕQ JHUoHNOHúWLULPL ED÷OÕ OLVWHOHU ]HULQGH
\DSÕOPDNWDGÕU
node
info next
List A B C D E
ùHNLO'R÷UXVDO%D÷OÕ/LVWH
%D÷OÕ OLVWHOHULQ GL]LOHU ]HULQH DYDQWDMÕ ELU JUXS HOHPDQ DUDVÕQD HOHPDQ
HNOHPHGH YH ELU JUXS HOHPDQ DUDVÕQGDQ HOHPDQ oÕNDUPDGD RUWD\D oÕNDU
<'Ro'U$\EDUV8ö85 61
9(5ø<$3,/$5,*]-2003) %|OP/LVWHOHUYH%D÷OÕ/LVWHOHU
gQFHOLN.X\UXNODUÕQÕQ%D÷OÕ/LVWH*HUoHNOHúWLULPL
gQFHOLNNX\UXNODUÕQGDOLVWHOHULQVÕUDODQDUDNNXOODQÕPÕVÕUDODQPDGDQNXOODQÕPÕQD
göre daha etkindir.
<Õ÷ÕWYH.X\UXNODUÕQ%D÷OÕ/LVWH*HUoHNOHúWLULPOHUL
<Õ÷ÕWODUÕQED÷OÕOLVWHJHUoHNOHúWLULPLùHNLO¶GHJ|UOPHNWHGLU
6 ekle
Stack
(OHPDQdÕNDU
Stack 6 Stack 6
5 5 5
3 3 3
8 8 8
7 7 7
ùHNLO<Õ÷ÕWODUÕQED÷OÕOLVWHJHUoHNOHúWLULPL(OHPDQHNOHPHYHoÕNDUPD
<'Ro'U$\EDUV8ö85 62
9(5ø<$3,/$5,*]-2003) %|OP/LVWHOHUYH%D÷OÕ/LVWHOHU
.X\UXNODUÕQED÷OÕOLVWHJHUoHNOHúWLULPLùHNLO¶GHJ|UOPHNWHGLU
Front Rear
4 1 7 9 3
6 ekle :
Front Rear
4 1 7 9 3 6
(OHPDQdÕNDU
Front Rear
4 1 7 9 3 6
ùHNLO.X\UXNODUÕQED÷OÕOLVWHJHUoHNOHúWLULPL(OHPDQHNOHPHYHoÕNDUPD
'L÷HU%D]Õ/LVWH<DSÕODUÕ
List A B C D E
List A B C D E
<'Ro'U$\EDUV8ö85 63
9(5ø<$3,/$5,*]-2003) %|OP/LVWHOHUYH%D÷OÕ/LVWHOHU
List A B C D E
-DYD3URJUDPODPD'LOLQGH%D÷OÕ/LVWHgUQH÷LYH.XOODQÕPÕ
%D÷OÕ/LVWHQLQ'÷P<DSÕVÕ
'÷P
//
//
// veri sonraki
class Dugum
{
SXEOLFLQWYHULGH÷LúLNWLSOHUGHoR÷DOWÕODELOLU
SXEOLF'XJXPVRQUDNLVRQUDNLG÷PQDGUHVL
publiFYRLG\D]GLU'÷PQYHULVLQL\D]GÕUÕU
{ System.out.print(" "+veri); }
}
%D÷OÕ/LVWH<DSÕVÕ
//
// bas
class BListe
{
/LVWHQLQLONG÷PQQDGUHVLQLWXWDU
private Dugum bas;
<'Ro'U$\EDUV8ö85 64
9(5ø<$3,/$5,*]-2003) %|OP/LVWHOHUYH%D÷OÕ/LVWHOHU
SXEOLF%/LVWH%LU%/LVWHQHVQHVL\DUDWÕOGÕ÷ÕQGD
^EDV QXOO`ERúOLVWHRODUDNDoÕOÕU
/LVWHGHDQDKWDUGH÷HULQLEXOXU
public Dugum bul(int anahtar)
{
Dugum etkin = bas;
while(etkin.veri != anahtar)
{
if(etkin.sonraki==null)
return null;
else
etkin = etkin.sonraki;
};
return etkin;
}
while(etkin.veri!=anahtar)
{
if(etkin.sonraki==null)
return null;
else
{ onceki = etkin; etkin = etkin.sonraki; }
}
if(etkin==bas)
bas = bas.sonraki;
else
onceki.sonraki = etkin.sonraki;
return etkin;
}
<'Ro'U$\EDUV8ö85 65
9(5ø<$3,/$5,*]-2003) %|OP/LVWHOHUYH%D÷OÕ/LVWHOHU
%LUED÷OÕOLVWHROXúWXUDUDN%OLVWHYH'XJXP
VÕQÕIODUÕQÕPHWRWODUÕ\ODELUOLNWHWHVWHGHQVÕQÕI
class BListeTest
{
public static void main(String args[])
{
OLVWHDGOÕELUED÷OÕOLVWHQHVQHVL\DUDWÕU
BListe liste = new BListe();
liste.basaEkle(9);
for(int i=8; i>=1; --i) liste.basaEkle(i);
liste.listele();
int deger = 5;
Dugum d = liste.bul(deger);
if(d==null)
System.out.println("\n"+deger+" Listede Yok");
else
System.out.println("\n"+deger+" Bulundu");
Dugum s = liste.sil(5);
liste.listele();
(NUDQdÕNWÕVÕ
// Bastan Sona Liste : 1 2 3 4 5 6 7 8 9
// 5 Bulundu
// Bastan Sona Liste : 1 2 3 4 6 7 8 9
<'Ro'U$\EDUV8ö85 66
9(5ø<$3,/$5,*]-2003) %|OP$OJRULWPDODUÕQ.DUúÕODúWÕUÕOPDVÕ
BÖLÜM 8
$/*25ø70$/$5,1.$5ù,/$ù7,5,/0$6,
*LULú
%LUSURJUDPÕQSHUIRUPDQVÕJHQHORODUDNSURJUDPÕQLúOHWLPLLoLQJHUHNOLRODQELOJLVD\DU]DPDQÕ
YH EHOOH÷LGLU %LU SURJUDPÕQ ]DPDQ NDUPDúÕNOÕ÷Õ WLPH FRPSOH[LW\ SURJUDPÕQ LúOHWLP
VUHVLGLU %LU SURJUDPÕQ \HU NDUPDúÕNOÕ÷Õ VSDFH FRPSOH[LW\ SURJUDPÕQ LúOHWLOGL÷L VUHFH
JHUHNOLRODQ\HUPLNWDUÕGÕU%LUSUREOHPLQo|]PQGHNXOODQÕODELOHFHNRODQDOJRULWPDODUGDQ
HQHWNLQRODQÕVHoLOPHOLGLU(QNÕVDVUHGHo|]PHXODúDQYH\DHQD]LúOHP\DSDQDOJRULWPD
WHUFLKHGLOPHOLGLU%XUDGDELOJLVD\DUÕQ\DSWÕ÷ÕLú|QHPOLGLU%D]ÕGXUXPODUGDGDHQD]EHOOHN
KDUFD\DQDOJRULWPDQÕQWHUFLKHGLOPHVLJHUHNHELOLU$\UÕFDSURJUDPFÕQÕQ\DSWÕ÷ÕLúDoÕVÕQGDQ
YH\D DOJRULWPDODUÕQ DQODúÕOÕUOÕNODUÕ EDNÕPÕQGDQ GD DOJRULWPDODU NDUúÕODúWÕUÕODELOLU 'DKD NÕVD
sürede biten bir algoritma yazmak için daha çok kod yazmak veya daha çok bellek kullanmak
gerekebilir (trade-off).
<D]ÕOÕPFÕODU LNL IDUNOÕ DOJRULWPDQÕQ \DSWÕNODUÕ LúL QDVÕO |OoS NDUúÕODúWÕUÕUODU" øON o|]P
DOJRULWPDODUÕ ELU SURJUDPODPD GLOLQGH NRGOD\ÕS KHU LNL SURJUDPÕ GD oDOÕúWÕUDUDN LúOHWLP
VUHOHULQLNDUúÕODúWÕUPDNWÕUøúOHWLPVUHVLNÕVDRODQGDKDL\LELUDOJRULWPDGHQLOHELOLUPL" Bu
\|QWHPGH LúOHWLP VUHOHUL EHOLUOL ELU ELOJLVD\DUD |]HOGLU 'ROD\ÕVÕ LOH LúOHWLP VUHVL GH EX
ELOJLVD\DUD ED÷OÕGÕU 'DKD JHQHO ELU |OoP \DSDELOPHN LoLQ RODVÕ WP ELOJLVD\DUODU ]HULQGH
DOJRULWPDQÕQoDOÕúWÕUÕOPDVÕJHUHNLU
øNLQFL o|]P LúOHWLOHQ NRPXW YH GH\LPOHULQ VD\ÕVÕQÕ EXOPDNWÕU )DNDW EX |OoP NXOODQÕODQ
SURJUDPODPD GLOLQH J|UH YH SURJUDPFÕODUÕQ VWLOLQH J|UH GH÷LúLP J|VWHULU %XQXQ \HULQH
DOJRULWPDGDNL NULWLN JHoLúOHULQ VD\ÕVÕ KHVDSODQDELOLU +HU WHNUDU LoLQ VDELW ELU Lú \DSÕOÕ\RU YH
sabit bir sUHJHoL\RUVDEX|OoDQODPOÕKDOHJHOLU
%XUDGDQDOJRULWPDQÕQWHPHOLQGH\DWDQELULúOHPLD\ÕUDUDNEXLúOHPLQNDoNHUHWHNUDUODQGÕ÷ÕQÕ
EXOPDGúQFHVLGR÷PXúWXUgUQHNRODUDNELUWDPVD\ÕGL]LVLQGHNLWPHOHPDQODUÕQWRSODPÕQÕ
KHVDSODPDLúOHPLQGHJHUHNOLRODQLúPLNWDUÕQÕ|OoPHNLoLQWDPVD\ÕWRSODPDLúOHPOHULQLQVD\ÕVÕ
EXOXQDELOLU HOHPDQOÕ ELU GL]LGHNL HOHPDQODUÕQ WRSODPÕQÕ EXOPDN LoLQ WRSODPD LúOHPL
\DSPDNJHUHNLUQHOHPDQOÕELUOLVWHGHNLHOHPDQODUÕQWRSODPÕQÕEXOPDNLoLQQ-WRSODPDLúOHPL
yapPDN JHUHNLU GL\H JHQHOOHúWLUPH \DSDELOLUL] %|\OHFH DOJRULWPDODUÕ NDUúÕODúWÕUÕUNHQ EHOLUOL
ELUGL]LER\XWXLOHVÕQÕUOÕNDOÕQPD]
øNLJHUoHOPDWULVLQoDUSÕPÕQGDNXOODQÕODQDOJRULWPDODUÕQNDUúÕODúWÕUÕOPDVÕLVWHQGL÷LQGHPDWULV
oDUSÕPÕLoLQJHUHNHQJHUoHOVD\ÕoDUSPDYHWRSODPDLúOHPOHULQLQNDUÕúÕPÕELU|OoRODFDNWÕU
%X|UQHNWHQLOJLQoELUVRQXFDXODúÕOÕU%D]ÕLúOHPOHULQD÷ÕUOÕ÷ÕGL÷HUOHULQHJ|UHID]ODGÕU%LUoRN
ELOJLVD\DUGDELOJLVD\DU]DPDQÕFLQVLQGHQJHUoHOVD\ÕoDUSÕPÕJHUoHOVD\ÕWRSODPÕQGDQoRNGDKD
X]XQ VUHU 'ROD\ÕVÕ LOH WP PDWULV oDUSÕPÕ GúQOG÷QGH WRSODPD LúOHPOHULQLQ HWNLQOLN
]HULQGHNLHWNLVLD]RODFD÷ÕQGDQLKPDOHGLOHELOLUOHU6DGHFHoDUSPDLúOHPOHULQLQVD\ÕVÕGLNNDWH
DOÕQDELOLU $OJRULWPD DQDOL]LQGH JHQHOGH DOJRULWPDGD HJHPHQ RODQ ELU LúOHP EXOXQXU YH EX
GL÷HUOHULQLJUOWQRLVHG]H\LQHLQGLUJHU
<'Ro'U$\EDUV8ö85 67
9(5ø<$3,/$5,*]-2003) %|OP$OJRULWPDODUÕQ.DUúÕODúWÕUÕOPDVÕ
øúOHWLP=DPDQÕ5XQQLQJ7LPH
øúOHWLP ]DPDQÕQÕ JLUGL ER\XWXQXQ ELU IRQNVL\RQX RODUDN HOH DOPDN WP JHoHUOL girdileri tek
GH÷HUHLQGLULU%XGDGH÷LúLNDOJRULWPDODUÕNDUúÕODúWÕUPD\ÕNROD\ODúWÕUÕU(Q\D\JÕQNDUPDúÕNOÕN
ölçüleri “ Worst –&DVH 5XQQLQJ 7LPH´ HQ N|W GXUXP LúOHWLP VUHVL YH ³$YHUDJH-Case
5XQQLQJ7LPH´RUWDODPDGXUXPLúOHWLPVUHVL¶GLU
$OJRULWPDODUÕQNDUúÕODúWÕUÕOPDVÕQGDDVLPSWRWLNHWNLQOLNOHULGHGLNNDWHDOÕQDELOLU*LUGLER\XWX
VRQVX]D \DNODúÕUNHQ LúOHWLP VUHVLQLQ DUWÕúÕ $VLPSWRWLN J|VWHULPLQ HOHPDQÕ RODQ |nemli
J|VWHULP YDUGÕU2-notation, o-notation, Ω-notation, θ-notation. Burada sadece O gösterimi
]HULQGHGXUXODFDNWÕU2J|VWHULPLIRQNVL\RQODUÕQDUWÕúRUDQÕQÕQVWVÕQÕUÕQÕEHOLUOHU2IQ
IQIRQNVL\RQXQGDQGDKDKÕ]OÕDUWPD\DQIRQNVL\RQODUNPHVLQi gösterir.
QHOHPDQOÕELUOLVWHGHNLHOHPDQODUÕQWRSODPÕQÕEXOPDNLoLQQ-WRSODPDLúOHPL\DSPDNJHUHNLU
GL\H JHQHOOHúWLUPH \DSPÕúWÕN <DSÕODQ LúL JLUGL ER\XWXQXQ ELU IRQNVL\RQX RODUDN HOH DOPÕú
olduk. Bu fonksi\RQ\DNODúÕPÕQÕPDWHPDWLNVHOJ|VWHULPNXOODQDUDNLIDGHHGHELOLUL]%LJ-O (O
KDUIL VD\ÕVÕ GH÷LO J|VWHULPL YH\D E\NON GHUHFHVL RUGHU RI PDJQLWXGH %\NON
GHUHFHVLQLSUREOHPLQER\XWXQDED÷OÕRODUDNIRQNVL\RQGDHQKÕ]OÕDUWÕúJ|VWHUHQWHULPEHOLUOHr.
Örnek olarak :
<'Ro'U$\EDUV8ö85 68
9(5ø<$3,/$5,*]-2003) %|OP$OJRULWPDODUÕQ.DUúÕODúWÕUÕOPDVÕ
DOÕQPD\DELOLU %X GL÷HU WHULPOHULQ LúOHP VUHVLQL HWNLOHPHGLNOHUL DQODPÕQD JHOPH] EX
\DNODúÕP\DSÕOGÕ÷ÕQGDQ
LQoRNE\NGH÷HUOHULQGH|QHPWDúÕPDGÕNODUÕDQODPÕQDJHOLU
n, problemiQER\XWXGXU<Õ÷ÕWOLVWHNX\UXND÷DoJLELYHUL\DSÕODUÕQGDHOHPDQVD\ÕODUÕGÕUQ
HOHPDQOÕELUGL]LJLEL
%LU OLVWHGHNL WP HOHPDQODUÕQ GRV\D\D \D]ÕOPDVÕ LoLQ QH NDGDU Lú \DSÕOÕU &HYDS OLVWHGHNL
HOHPDQVD\ÕVÕQDED÷OÕGÕU
Algoritma
OPEN (Rewrite) the file
WHILE more elements in list DO
Print the next element
øúOHPL\DSPDNLoLQJHoHQVUH
Q
%LUHOHPDQÕQGRV\D\D\D]ÕOPDVÕLoLQJHoHQVUHGRV\DQÕQDoÕOPDVÕVÕUDVÕQGDJHoHQVUH
$OJRULWPD 2Q
GLU $OJRULWPDQÕQ ]DPDQ NDUPDúÕNOÕ÷Õ 2Q¶GLU dQN Q WDQH LúOHP
VDGHFH GRV\D DoÕOPDVÕ LúOHPL YDUGÕU <]OHUFH HOHPDQÕQ GRV\D\D ND\GHGLOGL÷L GúQOUVH
GRV\DDoÕOPDVÕVÕUDVÕQGDJHoHQVUHPLNWDUÕUDKDWOÕNODLKPDOHGLOHELOLU$PDD]VD\ÕGDHOHPDQ
YDUVDGRV\DDoÕOPDVÕVÕUDVÕQGDJHoHQVUHPLNWDUÕ|QHPWDúÕ\DELOLUYHWRSODPVUH\HNDWÕOÕPÕ
daha fazla olur.
%LU DOJRULWPDQÕQ E\NON GHUHFHVL ELOJLVD\DUGD LúOHWLOGL÷LQGH VRQXFXQ QH NDGDU VUHGH
DOÕQDFD÷ÕQÕEHOLUWPH]%D]HQGHEXWUELUELOJL\HJHUHNVLQLPGX\XOXUgUQHNRODUDNELUNHOLPH
LúOHPFLQLQ VD\IDOÕN ELU \D]Õ ]HULQGH \D]ÕP GHQHWLPL \DSPD VUHVLQLQ ELUNDo VDQL\H
G]H\LQGHQ ID]OD ROPDPDVÕ LVWHQLU %|\OH ELU ELOJL LVWHQGL÷LQGH %LJ-2 DQDOL]L \HULQH GL÷HU
|OoPOHUNXOODQÕOPDOÕGÕU3URJUDPGH÷LúLN\|QWHPOHUHJ|UHNRGODQÕUYHNDUúÕODúWÕUPD\DSÕOÕU
3URJUDPÕQ oDOÕúWÕUÕOPDVÕQGDQ |QFH YH VRQUD ELOJLVD\DUÕQ VDDWL ND\GHGLOLU øNL VDDW DUDVÕQGDNL
IDUN DOÕQDUDN JHoHQ VUH EXOXQXU %X WU ELU %HQFKPDUN WHVWL LúOHPOHULQ EHOLUOL ELU
ELOJLVD\DUGDEHOLUOLELULúOHPFLYHEHOLUOLND\QDNODUNXOODQÕODUDNQHNDGDUVUG÷QJ|VWHULU
%LOJLVD\DUÕQ \DSWÕ÷Õ LúLQ SURJUDPÕQ ER\XWX LOH |UQHN RODUDN VDWÕU VD\ÕVÕ LOH LOJLOL ROPDVÕ
JHUHNPH]1HOHPDQOÕELUGL]L\L¶OD\DQLNLSURJUDPGD2QROGX÷XKDOGHND\QDNNRGODUÕQÕQ
VDWÕUVD\ÕODUÕROGXNoDIDUNOÕGÕU
Program 1 : Program 2 :
<'Ro'U$\EDUV8ö85 69
9(5ø<$3,/$5,*]-2003) %|OP$OJRULWPDODUÕQ.DUúÕODúWÕUÕOPDVÕ
¶GHQQ¶HNDGDURODQVD\ÕODUÕQWRSODPÕQÕKHVDSOD\DQLNLNÕVDSURJUDPÕGúQHOLP
Program 1 : Program 2 :
3URJUDP 2Q¶GLU Q ROXUVD SURJUDPÕQ oDOÕúPDVÕ VÕUDVÕQGD Q LoLQ KDUFDQDQ VUHQLQ
\DNODúÕNNDWÕVUHKDUFDQDFDNWÕU3URJUDPLVH2¶GLUQ GHROVDn=50’ de olsa program
D\QÕVUHGHELWHU
$UWÕú2UDQÕ)RQNVL\RQODUÕ
<D\JÕQRODUDNNXOODQÕODQED]ÕDUWÕúRUDQÕIRQNVL\RQODUùHNLO¶GHJ|VWHULOPHNWHGLU
Fonksiyon øVLP
1 constant
logn logarithmic
n linear
n log n n log n
n2 quadratic
n3 cubic
2n exponential
n! factorial
ùHNLO<D\JÕQDUWÕúRUDQODUÕ
<'Ro'U$\EDUV8ö85 70
9(5ø<$3,/$5,*]-2003) %|OP$OJRULWPDODUÕQ.DUúÕODúWÕUÕOPDVÕ
3UDWLNWH.DUPDúÕNOÕN
'H÷LúLNDUWÕúIRQNVL\RQODUÕQÕQDOGÕNODUÕGH÷HUOHUHJ|UHELUWDEORùHNLO¶GHJ|VWHULOPLúWLU
logn n nlogn n2 n3 2n
0 1 0 1 1 2
1 2 2 4 8 4
2 4 8 16 84 16
3 8 24 64 512 256
4 16 64 256 4096 65536
5 32 160 1024 32768 4294967
296
%LU SURJUDPÕQ LúOHWLPL Q3 DGÕP VU\RUVD YH Q LVH SURJUDP 3 DGÕP VUHFHN
GHPHNWLU<DQLELUPLO\DUDGÕP
.XOODQÕODQ ELOJLVD\DU VDQL\HGH DGÕPÕ JHUoHNOHúWLUHELOHFHN NDGDU KÕ]OÕ ise bu
program tam 1 saniye sürecektir.
ùHNLO¶GHNLIRQNVL\RQODUGDQHOGHHGLOPLúELUJUDILNùHNLO¶WHJ|UOPHNWHGLU
n3 2n n2
n log2n
IQ
n
log2n
Q
ùHNLO'H÷LúLNIRQNVL\RQODUÕQJUDILNOHUL
<'Ro'U$\EDUV8ö85 71
9(5ø<$3,/$5,*]-2003) %|OP6ÕUDODPD
BÖLÜM 9
SIRALAMA (SORTING)
*LULú
(OHPDQ ND\ÕW \DSÕ WRSOXOXNODUÕ JHQHOGH KHU ]DPDQ GH÷LO ELU DQDKWDUD J|UH VÕUDOÕ
tutulurlar. Bu DQDKWDUJHQHOGHHOHPDQODUÕQELUDOWDODQÕ\DQL\HVLGLU(OHPDQODUVR\DGDJ|UH
VÕUDOÕROXUVDVR\DGÕDQDKWDUGÕUQXPDUD\DJ|UHVÕUDOÕROXUVDQXPDUDDQDKWDUGÕUQRWDJ|UHROXUVD
QRW DODQÕ DQDKWDUGÕU (OHPDQODU WRSOXOX÷X LoLQGHNL KHU HOHPDQÕQ DQDKWDU GH÷HUL kendinden
|QFHJHOHQHOHPDQÕQDQDKWDUGH÷HULQGHQE\NVHDUWDQVÕUDGDNoNVHD]DODQVÕUDGDVÕUDOÕGÕU
denilir (ilgili anahtara göre).
6ÕUDODPD YH DUDPD DUDVÕQGD ELU LOLúNL ROGX÷XQGDQ ELU X\JXODPDGD LON VRUX VÕUDODPD JHUHNOL
PLGLU"ROPDOÕGÕU$UDPDLúOHPOHUL\R÷XQLVHVÕUDODPDQÕQYH\DRúHNLOGHWXWPDQÕQJHWLUHFH÷L
\NVÕUDOÕROPD\DQND\ÕWODU]HULQGHNLDUDPDLúOHPOHULQLQJHWLUHFH÷LWRSODP\N\DQÕQGDoRN
KDILINDODFDNWÕU%XNDUDUYHULOLUVHDUNDVÕQGDQVÕUDODPDQÕQQDVÕO\DSÕODFD÷ÕYHKDQJLVÕUDODPD
\|QWHPOHULQLQNXOODQÕODFD÷ÕNDUDUODúWÕUÕOPDOÕGÕU%XQXQQHGHQLWPGL÷HU\|QWHPOHUGHQVWQ
evrensHOELUVÕUDODPDWHNQL÷LQLQROPDPDVÕQGDQGÕU
<'Ro'U$\EDUV8ö85 72
9(5ø<$3,/$5,*]-2003) %|OP6ÕUDODPD
6,5$/$0$7(.1ø./(5ø1ø1(7.ø1/ø./(5øYH$1$/ø=ø
%XEEOH6RUW([FKDQJH6RUWVNDSVDPÕQGD
%XEEOHVRUWVÕUDODPDWHNQLNOHULLoLQGHDQODúÕOPDVÕYHSURJUDPODQPDVÕNROD\ROPDVÕQDUD÷Pen
HWNLQOL÷LHQD]RODQDOJRULWPDODUGDQGÕUQHOHPDQOÕ[GL]LVLLoLQ
Veriler : 25 57 48 37 12 92 86 33
Tekrar 1 : 25 48 37 12 57 86 33 92
Tekrar 2 : 25 37 12 48 57 33 86 92
Tekrar 3 : 25 12 37 48 33 57 86 92
Tekrar 4 : 12 25 37 33 48 57 86 92
Tekrar 5 : 12 25 33 37 48 57 86 92
Tekrar 6 : 12 25 33 37 48 57 86 92
Tekrar 7 : ÖnFHNL WXUGD GH÷LúHQ HOHPDQ ROPDGÕ÷ÕQGDQ
\DSÕOPD]
<XNDUÕGDNLJLELL\LOHúWLUPH\DSÕOPÕúDOJRULWPDGDHWNLQOLN
iterasyon i'de, (n-LNDUúÕODúWÕUPD\DSÕODFDNWÕU
7RSODPNDUúÕODúWÕUPDVD\ÕVÕ = (n-1)+(n-2)+(n-3)+...+(n-k)
= kn - k*(k+1)/2
= (2kn - k2 - k)/2
RUWDODPDLWHUDV\RQVD\ÕVÕN2QROGX÷XQGDQ 2Q2)
<'Ro'U$\EDUV8ö85 73
9(5ø<$3,/$5,*]-2003) %|OP6ÕUDODPD
#include <stdio.h>
void main()
{
double dizi[8] = { 23, 398, 34, 100, 57, 67, 55, 320 };
qsort2( &dizi[0], &dizi[7] );
}
<'Ro'U$\EDUV8ö85 74
9(5ø<$3,/$5,*]-2003) %|OP6ÕUDODPD
6WUDLJKW6HOHFWLRQ6RUW6HOHFWLRQ6RUWVNDSVDPÕQGD
(OHPDQODUÕQVHoLOHUHNX\JXQ\HUOHULQHNRQXOPDVÕLOHJHUoHNOHúWLULOHQELUVÕUDODPDGÕU
Veriler : 25 57 48 37 12 92 86 33
Tekrar 1 : 25 57 48 37 12 33 86 92
Tekrar 2 : 25 57 48 37 12 33 86 92
Tekrar 3 : 25 33 48 37 12 57 86 92
Tekrar 4 : 25 33 12 37 48 57 86 92
Tekrar 5 : 25 33 12 37 48 57 86 92
Tekrar 6 : 25 12 33 37 48 57 86 92
Tekrar 7 : 12 25 33 37 48 57 86 92
6HOHFWLRQ6RUW
XQDQDOL]LGR÷UXGDQGÕU
1. turda (n-1),
2. turda (n-2),
3. ...
(n-7XUGDNDUúÕODúWÕUPD\DSÕOPDNWDGÕU
<'Ro'U$\EDUV8ö85 75
9(5ø<$3,/$5,*]-2003) %|OP6ÕUDODPD
(OHPDQODUÕQVÕUDVÕQDX\JXQRODUDNOLVWH\HWHNWHNHNOHQPHVLLOHJHUoHNOHúWLULOHQVÕUDODPDGÕU
Veriler 25 57 48 37 12 92 86 33
Tekrar 1 25 57 48 37 12 92 86 33
Tekrar 2 25 48 57 37 12 92 86 33
Tekrar 3 25 37 48 57 12 92 86 33
Tekrar 4 12 25 37 48 57 92 86 33
Tekrar 5 12 25 37 48 57 92 86 33
Tekrar 6 12 25 37 48 57 86 92 33
Tekrar 7 12 25 33 37 48 57 86 92
(÷HUYHULOHUVÕUDOÕLVHKHUWXUGDNDUúÕODúWÕUPD\DSÕODFDNWÕU
YH 2Q RODFDNWÕU 9HULOHU WHUV VÕUDOÕ LVH WRSODP
NDUúÕODúWÕUPDVD\ÕVÕQ-1)+(n-2)+...+3+2+1 = n*(n+1)/2 = O(n2)
RODFDNWÕU
Q
LQ E\N GH÷HUOHUL LoLQ TXLFNVRUW LQVHUWLRQ YH VHOHFWLRQ
VRUW
WDQ GDKDHWNLQGLU 4XLFNVRUW
X NXOODQPD\D EDúODPDQRNWDVÕ
\DNODúÕNHOHPDQOÕGXUXPODUGÕUGDKDD]HOHPDQÕQVÕUDODQPDVÕ
JHUHNWL÷LQGHLQVHUWLRQVRUWNXOODQÕODEilir.
<'Ro'U$\EDUV8ö85 76
9(5ø<$3,/$5,*]-2003) %|OP6ÕUDODPD
0HUJH6RUW0HUJH6RUWVNDSVDPÕQGD
6ÕUDOÕLNLYHULJUXEXQXELUOHúWLUHUHNoQFELUVÕUDOÕYHULJUXEXHOGHHWPH\HGD\DQÕU
#include <stdio.h>
#define numelts 8
Analiz : log2QWXUYHKHUWXUGDQYH\DGDKDD]NDUúÕODúWÕUPD
= O(n log2Q NDUúÕODúWÕUPD 4XLFNVRUW¶WD HQ N|W Gurumda O(n2)
NDUúÕODúWÕUPD JHUHNWL÷L GúQOUVH GDKD DYDQWDMOÕ )DNDW
PHUJHVRUW¶WDDWDPDLúOHPOHULID]ODYHDX[GL]LLoLQGDKDID]OD
yer gerekiyor.
<'Ro'U$\EDUV8ö85 77
9(5ø<$3,/$5,*]-2003) %|OPdø=*(/(5YH8\JXODPDODUÕ
BÖLÜM 10
dø=*(/(5*5$3+6YH8<*8/$0$/$5,
10.1 Terminoloji
9¶QLQ HOHPDQODUÕ N|úHOHU YHUWLFHV RODUDN DGODQGÕUÕOÕU (¶QLQHOHPDQODUÕ GD NHQDUODU HGJHV
RODUDNDGODQGÕUÕOÕU(¶QLQLoLQGHNLKHUNHQDU9LoLQGHNLLNLIDUNOÕN|úH\LELUOHúWLULU%LUoL]JHGH
N|úHOHUGDLUHOHUOHNHQDUODUGDoL]JLOHUOHJ|VWHULOLUùHNLO
v1
G=(V,E)
e1 e2 V={v1,v2,v3,v4}
E={(v1,v2),(v1,v3),(v3,v4),(v1,v4)}
v2 e4 v3 e1=(v1,v2)
e2=(v1,v3)
e3=(v3,v4)
e3 e4=(v1,v4)
v4 E={e1,e2,e3,e4}
ùHNLO Çizge
Yönsüz Kenar (undirected edge) : dL]JL úHNOLQGH \|Q EHOLUWLOPH\HQ NHQDUODU \|QV]
NHQDUODUGÕU<|QV]NHQDUODUGDY1,v2ROPDVÕLOHY2,v1ROPDVÕDUDVÕQGDIDUN\RNWXUgUQHNOHU
ùHNLO¶GHNLoL]JHGHNLNHQDUODU
Yönlü Kenar (directed edge) : 2N úHNOLQGH J|VWHULOHQ NHQDUODU \|QO NHQDUODUGÕU ùHNLO
LM¶GH RNXQ EDúÕ LNLQFL N|úH\L M RNXQ NX\UX÷X ELULQFL N|úH\L L J|VWHULU %D]Õ
NLWDSODUGDLM!úHNOLQGHJ|VWHULOLU
1
G1=(V,E)
V1={1,2,3,4}
E1={(1,2),(1,3),(1,4),(4,3)}
2 3
ùHNLO<|QOYH%D÷OÕdL]JH
<'Ro'U$\EDUV8ö85 78
9(5ø<$3,/$5,*]-2003) %|OPdø=*(/(5YH8\JXODPDODUÕ
.RPúX .|úHOHU $GMDFHQW $UDODUÕQGD GR÷UXGDQ ED÷ODQWÕ NHQDU EXOXQDQ L YH M N|úHOHUL
NRPúXGXU'L÷HUN|úHoLIWOHULNRPúXGH÷LOGLUgUQHNùHNLO¶GHYYHYYYHYY
YHYYYHYN|úHoLIWOHULNRPúXGXU
%LU .|úHQLQ 'HUHFHVL GHJUHH %LU N|úH\H ED÷OÕ RODQ NHQDUODUÕQ VD\ÕVÕGÕU ùHNLO ¶GH
v1’ in derecesi 3, v2’ nin derecesi 1, v3’ ün derecesi 2, v4’ ün derecesi 2’ dir.
$÷ÕUOÕNOÕ dL]JH ZHLJKWHG JUDSK +HU NHQDUD ELU D÷ÕUOÕN ZHLJKW YH\D PDOL\HW FRVW
GH÷HULQLQDWDQGÕ÷ÕoL]JHùHNLO
ø=0ø5
10 12
ANKARA ø67$1%8/
5
ùHNLO$÷ÕUOÕNOÕdL]JH
Yol (path) : G(V,E) çizgesinde i1 ve ik N|úHOHUL DUDVÕQGD 3 L1,i2,...,ik úHNOLQGH EHOLUWLOHQ
N|úHOHU GL]LVL (¶GH MN ROPDN ]HUH KHU M LoLQ Lj, ij+1 úHNOLQGH J|VWHULOHQ ELU Nenar
YDUVD ùHNLO ¶WH ø=0ø5¶GHQ $1.$5$¶\D GR÷UXGDQ YH\D ø67$1%8/¶GDQ JHoHUHN
JLGLOHELOLUø=0ø5ø67$1%8/$1.$5$
Uzunluk : %LU\RO]HULQGHNLNHQDUODUÕQX]XQOXNODUÕWRSODPÕR\ROXQX]XQOX÷XGXU
<'Ro'U$\EDUV8ö85 79
9(5ø<$3,/$5,*]-2003) %|OPdø=*(/(5YH8\JXODPDODUÕ
Daire veya devir (Cycle) : %DúODQJÕo YH ELWLú N|úHOHUL D\QÕ RODQ EDVLW \RO ùHNLO ¶WH
ø=0ø5ø67$1%8/$1.$5$ø=0ø5
Forest : %D÷OÕROPD]RUXQOXOX÷XROPD\DQD÷Do
Complete Graph : Q N|úH VD\ÕVÕ ROPDN ]HUH Q
Q- NHQDUÕ RODQ oL]JH NHQGLOHULQH
ED÷ODQWÕ\RNùHNOLQLGúQQ]N|úHVD\ÕODUÕLoLQ
dL]JHOHULQ.XOODQÕP$ODQODUÕ
%LOJLVD\DU$÷ODUÕQGDHOHNWULNVHOYHGL÷HUD÷ODUÕQDQDOL]LQGHNLP\DVDOELOHúLNOHULQPROHNOHU
\DSÕODUÕQÕQ DUDúWÕUÕOPDVÕQGD XODúÕP D÷ODUÕQGD NDUD GHQL] YH KDYD\ROODUÕ SODQODPD
projelerinde, sosyalDODQODUGDYHGL÷HUSHNoRNDODQGDNXOODQÕOPDNWDGÕU
<'Ro'U$\EDUV8ö85 80
9(5ø<$3,/$5,*]-2003) -DYD¶GD+D]ÕU9HUL<DSÕODUÕYH.ROHNVL\RQODU
-$9$
'$+$=,59(5ø<$3,/$5,YH.2/(.6ø<21/$5(.
Arayüzler
<'Ro'U$\EDUV8ö85 81
9(5ø<$3,/$5,*]-2003) -DYD¶GD+D]ÕU9HUL<DSÕODUÕYH.ROHNVL\RQODU
import java.util.*;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
Container c = getContentPane();
c.setLayout(new FlowLayout());
final JTextField tfoutput = new JTextField(10);
c.add(tfoutput);
tfoutput.setText(""+ind);
setSize(200,150); show();
}
ùHNLO
'L]LVÕUDODQGÕNWDQVRUWPHWRGXLOHVRQUD
1,2,4,6,7,8,9,11,15
LoLQGHELQDU\6HDUFKPHWRGXLOHGH÷HUL
DUDQPDNWDGÕU
'L]LLoLQGHNLNRQXPXPHWLQNXWXVXQD\D]GÕUÕOÕU
<'Ro'U$\EDUV8ö85 83
9(5ø<$3,/$5,*]-2003) -DYD¶GD+D]ÕU9HUL<DSÕODUÕYH.ROHNVL\RQODU
import java.util.*;
public SortedSetTest()
{
TreeSet m = new TreeSet(Arrays.asList(names));
System.out.println("Set: ");
printSet(m);
System.out.println("øONHOHPDQPILUVW
System.out.println("Son eleman :"+m.last());
}
(NUDQdÕNWÕVÕ
Set:
black green grey orange red tan white yellow
orange'dan öncekiler :black green grey
orange'dan sonrakiler:orange red tan white yellow
øONHOHPDQEODFN
Son eleman :yellow
<'Ro'U$\EDUV8ö85 84