Bilişim Teknolojileri - 16 - Temel Algoritmalar

Embed Size (px)

Citation preview

  • 8/9/2019 Biliim Teknolojileri - 16 - Temel Algoritmalar

    1/47

    T.C.

    MLL ETM BAKANLII

    MEGEP(MESLEK ETM VE RETM SSTEMNN

    GLENDRLMES PROJES)

    BLM TEKNOLOJLER

    TEMEL ALGORTMALAR

    ANKARA 2007

  • 8/9/2019 Biliim Teknolojileri - 16 - Temel Algoritmalar

    2/47

    Milli Eitim Bakanl tarafndan gelitirilen modller;

    Talim ve Terbiye Kurulu Bakanlnn 02.06.2006 tarih ve 269 sayl Karar ileonaylanan, Mesleki ve Teknik Eitim Okul ve Kurumlar nda kademeli olarakyaygnlatrlan 42 alan ve 192 dala ait ereve retim programlarndaamalanan mesleki yeterlikleri kazandrmaya ynelik gelitirilmi retim

    materyalleridir (Ders Notlardr).

    Modller, bireylere mesleki yeterlik kazandrmak ve bireysel renmeyerehberlik etmek amacyla renme materyali olarak hazrlanm, denenmek vegelitirilmek zere Mesleki ve Teknik Eitim Okul ve Kurumlarndauygulanmaya balanmtr.

    Modller teknolojik gelimelere paralel olarak, amalanan yeterliikazandrmak koulu ile eitim retim srasnda gelitirilebilir ve yaplmasnerilen deiiklikler Bakanlkta ilgili birime bildirilir.

    rgn ve yaygn eitim kurumlar, iletmeler ve kendi kendine mesleki yeterlikkazanmak isteyen bireyler modllere internet zerinden ulalabilirler.

    Baslm modller, eitim kurumlarnda rencilere cretsiz olarak datlr.

    Modller hibir ekilde ticari amala kullanlamaz ve cret karlndasatlamaz.

  • 8/9/2019 Biliim Teknolojileri - 16 - Temel Algoritmalar

    3/47

    i

    NDEKLERNDEKLER..........................................................................................................................iAIKLAMALAR ....................................................................................................................iiGR .......................................................................................................................................1RENME FAALYET-1.....................................................................................................31. SIRALAMA .........................................................................................................................3

    1.1. Ekleme Sralamas ..........................................................................................................41.2. Balon Sralamas ............................................................................................................71.3. Kabuk Sralamas ...........................................................................................................81.4. Hzl Sralama .............................................................................................................. 101.5. Sralama Algoritmalar ................................................................................................. 12UYGULAMA FAALYET ............................................................................................... 14LME VE DEERLENDRME .....................................................................................15

    RENME FAALYET-2................................................................................................... 162. ARAMA .............................................................................................................................16

    2.1. Sral (Ardk) Arama..................................................................................................162.2. kilik Arama .................................................................................................................182.3. Kyma (Hashing) Yntemi...........................................................................................19

    2.3.1. Kyma Fonksiyonu ..............................................................................................192.3.2. Kyma Ynteminde akmalar ..........................................................................202.3.3. Kyma Ynteminde Arama.................................................................................. 20

    UYGULAMA FAALYET ............................................................................................... 22

    LME VE DEERLENDRME .....................................................................................23RENME FAALYET-3................................................................................................... 243. KOD YLETRME .........................................................................................................24

    3.1. Doru Veri Yapsn Semek ....................................................................................... 243.2. Doru Algoritmay Semek .........................................................................................253.3. Kaynak Kodu yiletirmek ...........................................................................................25UYGULAMA FAALYET ............................................................................................... 29LME VE DEERLENDRME .....................................................................................30

    MODL DEERLENDRME ..............................................................................................31CEVAP ANAHTARLARI .....................................................................................................32SZLK ................................................................................................................................ 33

    KOD RNEKLER................................................................................................................34NERLEN KAYNAKLAR..................................................................................................42KAYNAKA .........................................................................................................................43

    NDEKLER

  • 8/9/2019 Biliim Teknolojileri - 16 - Temel Algoritmalar

    4/47

    ii

    AIKLAMALARKOD 481BB0028

    ALAN Biliim Teknolojileri

    DAL/MESLEK Alan Ortak

    MODLN ADI Temel Algoritmalar

    MODLN TANIMISralama ve arama ile ilgili program yazm, koduiyiletirme ile ilgili renme materyalidir.

    SRE 40/24

    N KOUL Veri Yaplar modln alm olmak.

    YETERLK Temel algoritmalar yapmak

    MODLN AMACI

    Genel AmaGerekli ortam salandnda, sralama ve arama ile

    ilgili algoritmalar yazabilecek, programlamann sonaamas olarak kodu iyiletirebileceksiniz.Amalar

    1. Sralama yapabileceksiniz.2. Arama yapabileceksiniz.3. Kodu iyiletirebileceksiniz.

    ETM RETMORTAMLARI VEDONANIMLARI

    Bilgisayar laboratuvar ve bu ortamda bulunan;bilgisayar, yazc, bilgisayar masalar, kt, kalem, lisansliletim sistemi program ve ak diyagram sembolleri ileilgili panolar.

    LME VEDEERLENDRME

    Her faaliyet sonrasnda o faaliyetle ilgilideerlendirme sorular ile kendi kendinizideerlendireceksiniz. Modl iinde ve sonunda verilenretici sorularla edindiiniz bilgileri pekitirecek,

    uygulama rneklerini ve testleri gerekli sre iindetamamlayarak etkili renmeyi gerekletireceksiniz.Srasyla aratrma yaparak, grup almalarna katlarak veen son aamada alan retmenlerine danarak lme vedeerlendirme uygulamalarn gerekletireceksiniz.

    AIKLAMALAR

  • 8/9/2019 Biliim Teknolojileri - 16 - Temel Algoritmalar

    5/47

    1

    GRSevgili renci,

    Her eyden nce herkes bir programlama dilini renebilir. Bilgisayar programlamayksek bir zek ve matematik bilgisi gerektirmez. Sadece asla vazgememe sabr verenme istei yeterlidir.

    Programlama bir hnerdir. Baz insanlar doal olarak dierlerinden daha iyidir, amaherkes pratik yaparak iyi olabilir. Baaramamaktan korkmak yerine, kendinizi bu maharetevererek, renmek iin uran. Programlama elencelidir, fakat yanl almayntemleriyle sinir bozucu olabilir ve zamannzn boa gemesine neden olabilir. Busebeple bu modlleri takip ederek, en az sknt ve en yksek memnuniyet ile programlamayreneceksiniz.

    Bu modl ile kazanacanz bilgiler sralama ve arama ile ilgili program yazmak vekodu iyiletirme yntemlerini kullanmaktr. Modl bitirdiinizde anlamadnz yerleritekrar okuyup, uygulaynz.

    Bu modl programlama temelleri modllerinin ilk drt modlnde gsterilenkonularn bir araya gelmi hlidir. Takldnz yerlerde eski modllerdeki bilgilere (diziler,veri yaplar, dngler) geri dnerek uygun konulara gz atnz.

    GR

  • 8/9/2019 Biliim Teknolojileri - 16 - Temel Algoritmalar

    6/47

    2

  • 8/9/2019 Biliim Teknolojileri - 16 - Temel Algoritmalar

    7/47

    3

    RENME FAALYET-1

    Programda sralama ile ilgili ksmlar yazabileceksiniz.

    Bu faaliyet ncesinde hazrlk amal aada belirtilen aratrmafaaliyetlerini yapmalsnz.

    Kitaplnzda kark hlde bulunan ansiklopedilerinizi veya dergilerinizi nas lsral hle getirirsiniz? Dzenli olarak durmasnn faydalar neler olabilir?

    Bir yerden bir yere gitmek iin birok alternatifiniz olabilir. En avantajl yolunasl seersiniz? En ksa yol bulma problemi ile ilgiliaratrma yapnz. rnein IETT sitesini ve GoogleEarth programlarn inceleyebilirsiniz.

    Doada bulunan motifler, simetri ve fraktal hakkndaaratrma yapnz. Mesela Fibonacci say dizisi ileayieinin ekirdekleri ayn ekilde sralanr.

    1. SIRALAMA

    Genellikle sralama (sorting) ilemlerini veritabannda kullanrz.sim bilgileri harf srasnda, telefon bilgileri alan kodlarna sral olarakistenebilir. Programmz bu olanaklar salamaldr. ok gerekli olan bu

    ilemlerin algoritmas karmak olabilir. Programnzn sralama hz danemlidir. rnein 15 ismin sralanmas dakikalarca srmemelidir.

    RENME FAALYET1

    AMA

    ARATIRMA

  • 8/9/2019 Biliim Teknolojileri - 16 - Temel Algoritmalar

    8/47

    4

    Bu blmde greceiniz bilgisayar bilimi almalar, en ksa srede en etkili ekilde

    sralama iin dzenlenmitir.

    Byk O Gsterimi

    Bir algoritmann etkinliini lmek iin bilgisayar programclar Byk OGsterimini tasarlamlardr. Byk O, bir algoritmann ynetmesi gereken bilgimiktarnn ilenme hzn ler.

    Programclar genellikle ayn miktardaki verinin, farkl algoritmalardaki ilem sresinibilmek isterler. Ortalama ve en kt durum senaryosu retirler. Byk O sayesindeprogram iin en uygun algoritma seilir.

    Mesela isimlerin sralanaca bir algoritmada, isimlerin says programn hznetkiler. Bu O(n) ile gsterilir. O sralama bykl, n de nesne saysdr. nboyutundaki bir problemin zmnde geen adm says T(n) = 4n - 2n + 2 olarakbulunabilir.

    1.1. Ekleme Sralamas

    Ekleme sralamas (insertion sort) aslnda bir kart oyunundaki kartlarn sralanmasnabenzetilebilir. Dank durumdaki kartlardan iki tanesini elinize alrsnz, ncsndierlerinin yannda uygun bir yere eklersiniz. Her kart aldnzda dierlerinin iindenuygun olan yere eklersiniz. Bylece kartlar sral hle gelir.

    Bu yntem ile basite program, kark olan saylar u admlar ile sralar:1. lk iki eleman listeden al np, karlatrlr, gerekirse yerleri deitirilir.2. Bir sonraki eleman alnp, nceki sral elemanlar iinde uygun yere eklenir.3. kinci adm sralama bitene dek tekrar edilir.

    Resim 1.1: Ekleme sralamas yntemi

  • 8/9/2019 Biliim Teknolojileri - 16 - Temel Algoritmalar

    9/47

    5

    Ekleme sralamasnda nce diziye* rastgele deerler ykleriz. Dizinin ikinci

    elemanndan balayan bir ana dng iinde program yazarz. Bir sonraki dizi eleman geiciolarak bir deikene aktarldktan sonra, bu deeri aktif dizi eleman ile karlatrrz. Eergeici deer kk ise baka bir dngde, sral olan ksmda bu deerin yeri bulunur. Dizisralanana dek bu ilem devam eder.

    Ekleme Sralamas programnn 5 elemanl dizi iin ak emas aadaki gibidir:

    Resim 1.2: Ekleme Sralamasnn ekran grnts

    Ekleme sralamas rneinin sahte kodlarn yaznz.

    * Diziler, programlama dillerinde genellikle 0 veya 1 indis deeri ile balarlar.

  • 8/9/2019 Biliim Teknolojileri - 16 - Temel Algoritmalar

    10/47

    6

    Resim 1.3: Ekleme sralamas ak emas

  • 8/9/2019 Biliim Teknolojileri - 16 - Temel Algoritmalar

    11/47

    7

    1.2. Balon Sralamas

    Balon sralamasnda (bubble sort) kark durumdaki saylar suyun iindeki balonlargibi hareket ederek yerlerini bulurlar. Say lar tekrarl olarak kontrol edilerek yakn saylar biraraya getirilir.

    1. lk iki eleman karlatrlr, gerekirse yerleri deitirilir.2. Listede bir sonraki elemana gidilerek, bir nceki eleman ile karlatrlr.3. Liste sonuna kadar 2. adm tekrar edilir.4. 1 ve 3. adm, tm listenin sralamas bitene dek tekrar edilir.

    Resim 1.4: Balon sralamas yntemi

    nce veri listesi hazrlanr. n artl bir ana dng iine, snrlar ilk elemandansondan bir nceki elemana kadar olan bir dng yaplr. Seili elemann deeri ile dizininsonraki elemannn deeri karlatrlr. Eer byk ise iki dizi eleman yer deitirilir. Dizisonuna kadar tarama ve yer deitirme ilemleri devam eder. Bu dng tekrar edilir ve

    deiiklik kalmam ise ana dng sonlandrl r.

    Balon sralamas rneinin sahte kodlarn yaznz.

    Resim 1.5: Balon sralamasnn ekran grnts, 13 rakamna dikkat ediniz

  • 8/9/2019 Biliim Teknolojileri - 16 - Temel Algoritmalar

    12/47

    8

    Resim 1.6: Balon sralamas ak emas

    Her iki algoritmann ilem admlarn karlatrnz. Kark listenin ka admdasralandn bulunuz.

    Dizilerin maksimum snrlarn deitirerek, ka admda sralamann bittiini testediniz.

    1.3. Kabuk Sralamas

    Kark durumdaki listede, en sondaki eleman en baa getirmek zaman kaybdr. Busebeple programclar kabuk sralamas (shell sort) algoritmasn gelitirmilerdir.

    Bl ve ynet mant ile tm dizinin sralanmas yerine, kk paralar halinde dizi

    sralanr. Kk listeler sralandktan sonra, listeler birletirilir.

  • 8/9/2019 Biliim Teknolojileri - 16 - Temel Algoritmalar

    13/47

    9

    Aslnda kabuk sralamas balon ve ekleme sralamasn hzlandrmak iin

    gelitirilmitir. Yani farkl bir sralama algoritmas deildir.1. Byk liste kk listelere blnr.2. Kk liste balon veya ekleme sralamas ile sralanr.3. Resim 1.7deki rnekte 15 ve 29 rakam sralanmasna gerek yoktur. 16 ve 4

    rakam sralanr, 78 ise ileme girmez.4. 3. admda sadece 4 ve 16nn yeri deiir, tekrar dizi kk listelere blnr.5. Dizide 15, 78 ve 16 sralanr, 4 ve 29 rakamlarnn sralanmas na gerek yoktur.6. Liste sralamas tamamlanana kadar 2 ve 4. admlar tekrarlanr.

    Resim 1.7: Kabuk sralamas yntemi

    Kabuk sralamas sahte kodlar aadaki gibidir. Ak emasn hazrlaynz.

    Resim 1.8: Kabuk sralamas ekran grnts

  • 8/9/2019 Biliim Teknolojileri - 16 - Temel Algoritmalar

    14/47

    10

    Bala

    Saysal Dizi Veriler(5)

    Saysal i, Geici, Dur, Ge, X, Snr

    Yaz; "Sralanacak veriler:"Dng i = 1, 5, 1

    Veriler(i) = Rasgele(100)

    Yaz; Veriler(i)

    Dng Bitti

    X = tamsay(5 / 2)ken (X > 0)

    D u r = 0

    Snr = 5 Xken (Dur = 0)

    G e = 0

    Dng i = 1, S

    n

    r, 1

    Eer (Veriler(i) > Veriler(i + X)) seGeici = Veriler(i)

    Veriler(i) = Veriler(i + X)

    Veriler(i + X) = Geici

    Ge = 1

    Eer BittiDng Bitti

    Snr = G e XEe r G e = 0 s e D u r = 1

    ken Bitti

    X = tamsay( X / 2 )ken BittiYaz; "Sral liste:"

    Dng i = 1, 5, 1Yaz; Veriler(i)

    Dng Bitti

    Bitir

    1.4. Hzl Sralama

    Hzl sralama (quick sort) dier yntemlere gre daha ok kullanl r. Bu yntemdelistenin ortasndan bir eleman alnr, elemann deerine gre sol veya sadaki deerler yerdeitirir.

    Resim 1.9: Hzl sralama yntemi

  • 8/9/2019 Biliim Teknolojileri - 16 - Temel Algoritmalar

    15/47

    11

    Liste yarya blndkten sonra, her ayrlan para tekrar yarya blnr. Alt paralar

    kendi aralarndasralanr. Kk paralar birletirilerek tm listenin sral hali oluturulur.1. Listenin ortasndan bir eleman seilir. Seili elemandan byk olan elemanlar

    saa, kk olanlar sola yer deitirilir.2. 1. adm listenin her yars iin tekrar edilir.3. Kk listeler birletirilir, sral liste elde edilir.

    Kendini tekrar eden fonksiyonlara tekrarlamal - recursive fonksiyon denir. Basitolarak fonksiyonun kendini armasdr. Hzl sralamada bu yntem kullanlyor. Busebeple sralama iin alt program yapmamz gereklidir.

    Resim 1.10: Hzl Sralama ekran grnts Hzl sralamann sahte kodlarn yaznz. Ak emasn test ediniz. Kendiniz 5 adet rastgele rakam seerek, bu deerleri adm

    adm deneyiniz.

    Sralama ynn bykten ke doru yapmak iin ak emasnda ne gibi birdeiiklik yap lmaldr?

    Resim 1.11.a: Hzl sralamann ana program

  • 8/9/2019 Biliim Teknolojileri - 16 - Temel Algoritmalar

    16/47

    12

    Resim 1.11b: Hzl sralama ynteminin ak emas

    1.5. Sralama Algoritmalar

    Ekleme, balon, kabuk ve hzl sralama yntemleri ile kark listelerin deiikmetotlar ile sralanabildiini grdnz.

    Genellikle kk listelerde ekleme sralamas, neredeyse sral olan bir listede balonsralamas, hz gerektiren yerlerde hzl sralama kullanlr. Fakat kodlamak iin gerekenzamandan tasarruf etmek iin, programc lar dilin iine hazr bulunan sralama komutlarntercih ederler. rnein, u ekilde bir komut olabilir:

    srala diziAdi, ilkEleman, sonEleman

    Dilin kendi komutunu kullanmanz tavsiye edilir, fakat komut yaval a neden oluyorise, kendi algoritmanz oluturunuz.

  • 8/9/2019 Biliim Teknolojileri - 16 - Temel Algoritmalar

    17/47

    13

    Resim 1.12: Hazr komut kullanarak sralama ilemi

    Hazr sralama ynteminin sahte kodunu yaz nz.

    Resim 1.13: Hazr sralama komutu ile liste sralamak

  • 8/9/2019 Biliim Teknolojileri - 16 - Temel Algoritmalar

    18/47

    14

    UYGULAMA FAALYET

    lem Basamaklar neriler1. 5 adet kark hlde tam say deerseiniz.

    Aadaki tablodan belli bir stunuseebilirsiniz.

    2. Deerlerin hangi yntem ilesralanacana karar veriniz.

    Genellikle kk listelerde balon sralamas,daha uzun listelerde eklemeli ve hzl sralamatercih edilir.

    3. Kark haldeki saylar sralaynz. Ak emasn izerek, setiiniz deerlerisralaynz.

    4. Ekrana saylar listeleyiniz. Listedeki en byk ve en kk deerleriistatistik amal belirtebilirsiniz.Saylarn ortalama ve toplamlarn bulmailemlerini yapabilirsiniz.

    5. Program yazarak ka admdasralandn bulunuz

    Dier algoritmalar ile ilemlerin bitmesi iingereken adm says karlatrlabilir.

    rnek alnabilecek deerler:Szck Resim Sayfa Aratrma rnekler

    Modl 1 8664 65 54 44 14Modl 2 8048 29 52 52 36

    Modl 3 6261 29 41 22 15Modl 4 4700 31 36 19 10Modl 5 5608 27 39 16 12

    UYGULAMA FAALYET

  • 8/9/2019 Biliim Teknolojileri - 16 - Temel Algoritmalar

    19/47

    15

    LME VE DEERLENDRME

    OBJEKTF TESTLER (LME SORULARI)

    Aadaki sorulardan; sonunda parantez olanlar doru / yanl sorulardr. Verilenifadeye gre parantez iine doru ise D, yanl ise Y yaznz. kl sorularda uygun kkiaretleyiniz.

    1. () Bilgisayardaki dosya ve klasrler diskte isimlerine gre sralanm olarak tutulur.

    2. () Ksa algoritmalar karmak algoritmalardan daha hzl alr ve hemen sonucu

    bulur.

    3. () Listenin tamamn tarayan sralama yntemine balon sralamas denir.

    4. Aadaki sralama yntemlerinden hangisi hemen hemen sral deerler iin tercihedilir?A) EklemeliB) BalonC) KabukD) Hzl

    5. Aadaki sralama yntemlerinden hangisi dier sralama yntemlerinden birinikullanr?A) EklemeliB) BalonC) KabukD) Hzl

    6. Aadaki sralama yntemlerinden hangisi genellikle en az admda ilemi tamamlar?A) EklemeliB) BalonC) Kabuk

    D) Hzl

    LME VE DEERLENDRME

  • 8/9/2019 Biliim Teknolojileri - 16 - Temel Algoritmalar

    20/47

    16

    RENME FAALYET-2

    Programda arama ile ilgili ksmlar yazabileceksiniz.

    Bu faaliyet ncesinde hazrlk amal aada belirtilen aratrmafaaliyetlerini yapmalsnz.

    Bilgisayarnzdaki dosya ve klasrlerin aranmasn naslyapyorsunuz? Dosya iindeki bilgileri de arayabilirmisiniz? Daha hzl nasl arama yaplabilir?

    nternet sayfalarnda arama imkn nasl salanyor? Aramamotorlarnn gelimi arama seeneklerini inceleyiniz.

    Elektronik posta adreslerine gereksiz mesajlar gelebilir. Butr mesajlar bulan algoritmalar aratrnz. MeselaBayesian Filtreleme Algoritmas gibi

    2. ARAMA

    Sralama admndan sonra en nemli konu arama ilemidir. sim ve adres bilgilerinisaklayan bir programda, bilgilerin sralanmas ve aranmas algoritmalarna ihtiya duyulur.rnein; Ankarada yaayan F harfi ile balayan isimlerin listelenmesi istenebilir.

    Arama ileminin hzl olmas iin genellikle programlar verileri nce sralarlar.S ralama ve arama ilemleri, uygun algoritma seilerek hzl ve etkin olarak yaplr. Ayrcasral listede minimum ve maksimum deer otomatik olarak bulunmu olur. Listenin enbandaki eleman en kk deere, liste sonundaki eleman ise en byk deere sahiptir.

    2.1. Sral (Ardk) Arama

    Sral arama ( sequential search) listedeki tm bilgileri tarama yntemidir. Liste, bal

    liste veya dizi olabilir.

    RENME FAALYET2

    AMA

    ARATIRMA

  • 8/9/2019 Biliim Teknolojileri - 16 - Temel Algoritmalar

    21/47

    17

    Evinizin kap anahtarn kaybettiinizde, sral arama yntemini kullanarak anahtar

    aramak istersek, apartmandaki tm odalar tek tek arama yolu ile yapabiliriz. Eer anahtar ilkodalarda ise hzl bir ekilde anahtarnz bulursunuz. Yani kk listelerde bu aramaynteminin yavaln hissetmezsiniz bile. Tm ehri aramanz gerektiini dnn, aramahz ok yava olurdu.

    Aramay ister balangtan, isterseniz listenin sonundan balatabilirsiniz. Aranan bilgibulunduunda arama ilemi sona erer.

    Resim 2.1: Sral arama yntemi

  • 8/9/2019 Biliim Teknolojileri - 16 - Temel Algoritmalar

    22/47

    18

    Sral arama ynteminin sahte kodlarn hazrlaynz.

    Resim 2.2: Sral arama programnn ekran grnts

    2.2. kilik Arama

    kilik arama (binary search) sral haldeki bir listede hzlca arama yapmamz salar.Uzun liste ikiye blnr, aranan bilgi hangi yar da ise, o yar iinde arama yaplr. Saybulunana kadar liste yarya blnerek arama ilemi devam eder.

    Resim 2.3: kilik arama yntemine bir rnek

    On elemanl dizide 37 rakamn bulmak iin, nce dizinin ortasndaki eleman olan 30ile aramaya balanr. 37 rakam 30dan byk olduu iin sa taraftaki yarda aramayaplacaktr.

    kilik arama sadece sral hldeki listeler iindir.

  • 8/9/2019 Biliim Teknolojileri - 16 - Temel Algoritmalar

    23/47

    19

    Kalan be sayda ortadaki 59 ile aranan say olan 37 karlatrr. Bu sefer de sol

    tarafta arama yaplacaktr. Elimizde iki say kald. Listedeki ilk eleman aranan say ilekarlatrlr. 37 rakam nc admda bulunmu oldu. Sral arama ynteminde olsaydaltnc admda arama bitecekti.

    kilik arama ynteminin ak emasn iziniz. Test deerleri seip, ak emanzdeneyiniz.

    Yari deikeninin deeri bulunmasnda bir ak vardr. Eer Sol ve Sadeikenlerinin toplam tam say deikenin snrlarn geerse, program hata verip kapanr.Bu sorunu nas l zebilirisiniz?

    zm nerisi: (tamsay () komutu ondalkl saynn tam say ksmn verir.)

    Yari = Sol + tamsay((Sol - Sag) / 2)

    Resim 2.4: kilik arama programnn ekran grnts

    2.3. Kyma (Hashing) Yntemi

    Kyma veya kym yntemi (hashing search) yeri hemen hemen bilinen deerleribulmak iin yaplmtr. Mesela, evinizin anahtarn genellikle belli bir yere koyar z veya biryere asarz. Bylece bulmamz kolaylar. Programda aramay kolaylatrmak iin elimizdekideerleri dizide belli yerlere atacaz.

    2.3.1. Kyma Fonksiyonu

    Bir veri yaps (dizi veya bal liste) iine deerler iin, kyma veya kym deeri(hash value) hesaplanr. Kyma deeri, kyma fonksiyonu (hash function) yardm ilebulunur. Kyma fonksiyonu sayesinde, aranan deer tm listede aranmas yerine, belli biryerde aranarak bulunur. rnein bir arananDeger adl tam sayy dizide aradmzdnelim; nce kyma deeri bulunur:

    KymaDegeri = arananDeger % 5//mod bulmak iin baka bir yntem:

    KymaDegeri = arananDeger (tamsay(arananDeger / 5) * 5)

  • 8/9/2019 Biliim Teknolojileri - 16 - Temel Algoritmalar

    24/47

    20

    Bu forml bize saynn bee blmnden kalan sayy kyma deeri olarak verir.

    Hangi say saklanm olursa olsun kyma deerleri 0, 1, 2, 3 veya 4 olabilir. Mesela 26rakamnn 5e blmnden kalan deeri 1 olduu iin, 26 deerini dizinin 1. elemannaatayabiliriz.

    Resim 2.5: Kyma yntemi ile deerleri yerletirmek

    Uzun listelerde kyma yntemi ile arama ok hzl bir ekilde yaplabilir.

    2.3.2. Kyma Ynteminde akmalar

    Kyma fonksiyonu ile tek olan deere sahip bir say retilir. Farkl liste elemanlarnnayn kyma deeri olabilir. Mesela, 7 ve 32 deerlerinin 5 ile blmnden kalan say 2dir.

    Ayn kyma deeri birden fazla sayda ise, buna akma (collision) denir. akmalarkontrol altna almak iin, ayn kyma deerine sahip olan elemanlar bir yapda toplanr. kiboyutlu bir dizi veya bal liste iine akanlar tutulabilir.

    Dizi veya bal liste byyebilir veya hafzada fazla yer kaplamamas iinksaltlabilir.

    Resim 2.6: Kyma ynteminde akmalar engelleme2.3.3. Kyma Ynteminde Arama

    Deerler listeye kaydedildikten, sonra arama ilemi kyma fonksiyonu ile rahatlklayaplabilir. Ayn kyma deerine sahip elemanlar da kendi aralarnda taranr.

  • 8/9/2019 Biliim Teknolojileri - 16 - Temel Algoritmalar

    25/47

    21

    Eer her elemann kendi tek (unique) kyma deeri var ise, kyma fonksiyonu

    sayesinde tek admda arama ilemi tamamlanr. Birden fazla kyma deeri olan elemanlar iseen azndan kk bir liste halinde olduundan, arama ilemi fazla zaman kaybna nedenolmaz. Bu kk listede sral veya ikilik yntemleri ile arama yap labilir.

    Resim 2.7: Kyma ynteminin program ekran grnts

    Kyma arama ynteminde oluan alt listelerde nasl arama yaplabilir? Hangi aramayntemini tercih edersiniz?

    Ksa listelerde kolay kodlanabilen sral arama, hz gerektiren daha byklistelerde ikilik arama tercih edilir.

    ok byk verilerde kyma yntemi seilebilir, ama kodlamas zordur. ncedendeerleri veri yapsna yerletirme gereklilii ve alt listede farkl algoritma ile aramakullanlmas gerektii iin kod yazm uzun zaman alr.

  • 8/9/2019 Biliim Teknolojileri - 16 - Temel Algoritmalar

    26/47

    22

    UYGULAMA FAALYET

    lem Basamaklar neriler1. 5 adet kark halde tam say deerseiniz.

    Aadaki tablodan belli bir stunuseebilirsiniz.

    2. Aramay kolaylatrmak iin veriyisralaynz.

    Genellikle kk listelerde balonsralamas, daha uzun listelerde eklemelive hzl sralama tercih edilir.

    3. Uygun algoritmay seerek aramaprogramn yaznz.

    Ak emasn izerek daha kolay programyazlabilir.

    4. Arama deerleri girerek, program

    deneyiniz.

    Setiiniz deeri listede arayabilirsiniz.

    rnek alnabilecek deerler:Szck Resim Sayfa Aratrma rnekler

    Modl 1 8664 65 54 44 14Modl 2 8048 29 52 52 36Modl 3 6261 29 41 22 15Modl 4 4700 31 36 19 10

    Modl 5 5608 27 39 14 12

    UYGULAMA FAALYET

  • 8/9/2019 Biliim Teknolojileri - 16 - Temel Algoritmalar

    27/47

    23

    LME VE DEERLENDRME

    OBJEKTF TESTLER (LME SORULARI)

    Aadaki sorulardan; sonunda parantez olanlar doru / yanlsorulardr. Verilen ifadeye gre parantez iine doru ise D, yanl iseY yaznz. kl sorularda uygun kk iaretleyiniz.

    1. Kark bir listede sadece saylar iin arama yapabiliriz. ( )

    2. Kk listelerde sral arama yntemi ile hzlca aranan deeri buluruz. ( )

    3. ok byk deerlere sahip olan saylar arama ilemi daha yavatr. ( )

    4. Kyma fonksiyonu sayesinde bir deeri ilk denemede buluruz. ( )

    5. Aadaki arama yntemlerinden hangisi tm listeyi tarayp ilemi tamamlar?A) SralB) kilikC) KymaD) Hibiri

    6. Aadaki yntemlerden hangisi listeyi ikiye blerek arama yapar?A) SralB) kilikC) KymaD) Hibiri

    LME VE DEERLENDRME

  • 8/9/2019 Biliim Teknolojileri - 16 - Temel Algoritmalar

    28/47

  • 8/9/2019 Biliim Teknolojileri - 16 - Temel Algoritmalar

    29/47

    25

    3.2. Doru Algoritmay Semek

    Algoritma ile bir problemin nasl alaca ayrntl olarak anlat lr. Meselaarkadanza evinizi tarif etmeniz gerekirse, ksa olsun diye ara sokaklardan veya kolay olsundiye ana yoldan gitmeyi anlatabilirsiniz. Ara sokaklar n anlatlmas zordur, ana yolun tarifide kolay ama yolu uzatyor olabilir.

    50.000 kiinin listelendii bir veri yapsnda hzl sralama yerine, balonsralamas yapmak ok uzun zaman alr. Sralama yaplan listede arama yapmak iin, sralarama yntemi ok uzun zamanda sonulanr, ikilikarama yntemi seilerek daha hzltamamlanabilir.

    Bir oyundaki en yksek 10 rekor bilgisi saklanyor diyelim, ilk kez oyun oynandnda

    10 adet rekor bilgisi botur. Her oyun oynandnda rekora yeni deerler eklenir. Burada enuygun sralama yntemi ekleme sralamas olabilir. Yeni yksek rekor yapldka listedeuygun yere bilgi eklenir. Eer balon sralamas ile rekor bilgilerini sralamak isterseniz,her oyun sonunda bilgiler defalarca taranarak s ralanr.

    Yazdnz programda, doru algoritmay seerek programn daha hzl almasnsalayabilirsiniz.

    3.3. Kaynak Kodu yiletirmekDoru veri yapsn ve algoritmay seseniz bile kodu iyiletirme (code optimizing)

    gerekebilir. Programnzn belli ksmlarn tekrar yazarak daha hzlandrabilir ve daha az

    bellek harcar hale getirebilirsiniz.

    neriler:

    Eer komutunda birden fazla art Ve / Veya ileleri ile balaynz.rnek:Eer (art1) Ve (art2) se

    Komutlar

    Eer Bitti

    Burada birinci art eer Hayr (False) ise ikinci veya dier artlara baklmaz. Busayede program fazladan ilem yapmaz. Zaman kazanrz ve program biraz daha

    hzl alr. ie Eer kullanrken Evet (True) olmas muhtemel art nce yaznz.

    Durum komutunda da buna dikkat ediniz. Bylece dier artlar bounataramak gerekmez.rnek:Eer art1 se

    Komutlar

    Deilse Eer art2 seKomutlar

    Eer Bitti

    Eer birinci art doru ise ikinci arta baklmaz. Eer ou zaman birinci art Hayr

    (False) ikinci art Evet (True) oluyor ise artlarn yerlerini deitirerek, zaman ve hzkazanabilirsiniz.

  • 8/9/2019 Biliim Teknolojileri - 16 - Temel Algoritmalar

    30/47

    26

    Dng komutu ile gereksiz fazladan dng yapmaynz. Dngler programda

    ok zaman yitirilmesine sebep olabilir. Dng belli sayda i ksmndakikomutlar altrr. Mesela dizide aranan deer daha ilk eleman ise, dierelemanlar taranmaya devam edilmemelidir. Zaman kayb olmamas iin gerekliyere Dngden k komutu yerletirerek dngden hedefe ulalnca klr.

    Bulundu = 0

    Dng J = 1, 300, 1

    Eer Dizi(J) = Aranan seBulundu = 1

    Dngden k //dngden klacakEer Bitti

    Dng Bitti

    Eer bulundu = 0 se

    Yaz; "Aranan deer bulunamad!"Deilse

    Yaz; "Aranan deer bulundu: " & JEer Bitti

    Dng iine gereksiz kod yazmaynz. Dng ile alakas olmayan satrlardng dna alnz.

    Dng J = 1, 5000, 1

    I = 0

    Eer Dizi(J) = 55 se

    Yaz; Dizi(J)

    Eer Bitti

    Dng Bitti

    Arama yaplrken fazladan yazlan I = 0 satr 5.000 kez altrlacaktr. Bugereksiz satr, az da olsa dngnn yavalamasna sebep olacak, sonu olarakprogramnz yavalatacaktr. ie dng yaparken iteki dngye gereksiz kod yazmaynz. dngyavalar ise, d dng de yavalar.

    Bellek tasarrufu iin deikenlerin veri trn doru seiniz. Tam say birdeiken iine kk deer aktarlarak kullanlyor ise Short Ksa, bykdeerler aktar larak kullanlyor ise Long Uzun seebilirsiniz. Ksa tamsaynn alabilecei deer aral yaklak 64.000 iken, uzun tam saynn deeraral yaklak 4 milyardr. Short trnde bir tam say 2 Byte, Long ise 8 Bytebellek alan kaplar.

    Mmkn olduunca programlama dilinin kendi komutlar ile hesaplamayapnz. Genellikle bu komutlar daha hzl altrlrlar.

    Sayi = Sayi + 1 //komutu yerine

    Sayi++; //C dilinde

    Inc(Sayi); //Pascal dilinde

    Dilin kendi komutlarn kullanmak kodun anlalr olmasn engeller. Dierprogramclar kodu anlayamayabilirler.

  • 8/9/2019 Biliim Teknolojileri - 16 - Temel Algoritmalar

    31/47

    27

    Daha hzl bir programlama diline geiniz. En hzl programlama dili makine

    dilidir. Sonra C ve C++ dilleri gelir. Birok programc basit ve yava olanVisual Basicte prototip olarak program hazrlar, daha sonra asl programlamadiline kodlar tarlar. Aslnda bu zahmetli ve riskli bir ilemdir. Yeni kodlarnalaca garanti deildir.yleyse ikinci bir yol, tm program yazmak yerine grnt olarak basit birdilde hazrlamak, as l dile sonra gemek olabilir.Birden fazla dil kullanlarak program yazlyor ise, her dilin kendi avantajkullanlabilir. Birbiri ile alabilen dillerde program yazmak, farklprogramlama dilleri bilen programclarn takm halinde bir proje zerindealmalarn salar.

    Derleyicinizi daha iyi hle getiriniz. Daha hzl bir dil yerine daha performanslbir derleyici seilebilir.Derleyicinin ayarlarn inceleyerek, daha iyi hle getirebilirsiniz. Ayarlardeitirirken dikkatli olunuz, program hzlandrmak isterken, hata ve kmelerekar daha zayf hle getirebilirsiniz.

  • 8/9/2019 Biliim Teknolojileri - 16 - Temel Algoritmalar

    32/47

    28

    Resim 3.1: Delphi, VB2005 ve C derleyici seenekleri

  • 8/9/2019 Biliim Teknolojileri - 16 - Temel Algoritmalar

    33/47

    29

    UYGULAMA FAALYET

    lem Basamaklar neriler1. Programn bitiminde kodlar iyiletiriniz. neriler ksmndaki maddelere gre bir

    rnek program iyiletiriniz.2. Kod satrlarn daha okunakl halegetiriniz.

    Yaptnz program dier programclarnrahat anlamas iin okunakl hle getirmeniziyi bir alkanlktr.

    3. Program iin daha hzl bir dile kodlardntrnz.

    QBasic gibi bir dilde yazlan program dahaperformansl olan C gibi bir dile eviriniz.

    4. Derleyici seeneklerini iyiletiriniz. Programlama dilinin derleme seeneklerini

    inceleyiniz.

    UYGULAMA FAALYET

  • 8/9/2019 Biliim Teknolojileri - 16 - Temel Algoritmalar

    34/47

    30

    LME VE DEERLENDRME

    OBJEKTF TESTLER (LME SORULARI)

    Aadaki sorulardan; sonunda parantez olanlar doru / yanl sorulardr. Verilenifadeye gre parantez iine doru ise D, yanl ise Y yaznz. kl sorularda uygun kkiaretleyiniz.

    1. Programlarn srm numaralar her zaman 1.0 ile balar. ( )

    2. Programlarn srm numaralar sadece ok byk deiikliklerde ilerler. ( )

    3. Basit mantk kullanlarak yaplan algoritmalar, programn performansn artrr. ( )

    4. Derleyici ayarlar deitirilerek programn hi hata vermeden almas salanabilir,fakat programn kme ihtimali daha da artar. ( )

    5. Aadakilerden hangisi programn almasn hi etkilemez?A) Programdaki gereksiz aklama satrlarn silmekB) Programda i ie dngleri ok kullanmakC) Programda Eer yerine Durum komutunu kullanmakD) Programdaki deikenlerin trn doru semek

    6. Aadakilerden hangisi kodu iyiletirme ile ilgili deildir?A) Program daha hzlandrmakB) Programn kaplad disk alann azaltmakC) Programn yardm dosyasn hazrlamakD) Program iin gereken bellek miktarn azaltmak

    LME VE DEERLENDRME

  • 8/9/2019 Biliim Teknolojileri - 16 - Temel Algoritmalar

    35/47

    31

    MODL DEERLENDRMEPERFORMANS TEST (YETERLK LME)

    Modl ile kazandnz yeterlii, retmeniniz ilem basamaklarna gre0 ile 9 puan arasnda olacak eklinde deerlendirecektir.

    DEERLENDRME KRTERLER Puan

    5 adet kark hlde tam say deer semeDeerlerin hangi yntem ile sralanacana karar verme

    Kark hldeki saylar sralamaProgram yazarak ka admda sraladn bulmaAramay kolaylatrmak iin veriyi sralamaUygun algoritmay seerek arama programn yazmaArama deerleri girerek, program denemeProgramn bitiminde kodlar iyiletirmeKod satrlarn daha okunakl hle getirmeProgram iin daha hzl bir dile kodlar dntrmeDerleyici seeneklerini iyiletirme

    Toplam (en fazla 99 puan olabilir)

    DEERLENDRME

    Yaptnz deerlendirme sonucunda eksikleriniz varsa renme faaliyetlerinitekrarlaynz.

    Modl tamamladnz, tebrik ederiz. retmeniniz size eitli lme aralaruygulayacaktr, retmeninizle iletiime geiniz.

    MODL DEERLENDRME

  • 8/9/2019 Biliim Teknolojileri - 16 - Temel Algoritmalar

    36/47

    32

    CEVAP ANAHTARLARIRENME FAALYET-1 CEVAP ANAHTARI

    1 Y2 Y3 D4 B5 C6 D

    RENME FAALYET-2 CEVAP ANAHTARI

    1 Y2 D3 Y4 Y5 A6 B

    RENME FAALYET-3 CEVAP ANAHTARI

    1 Y2 Y3 Y4 D5 A6 C

    Cevaplarnz cevap anahtarlar ile karlatrarak kendinizi deerlendiriniz.

    CEVAP ANAHTARLARI

  • 8/9/2019 Biliim Teknolojileri - 16 - Temel Algoritmalar

    37/47

    33

    SZLKsim Okunu Anlam

    sign sayn iaret, signature imza

    simulate simyuleyt benzetmek (simulation - benzetim)

    slot slot yuva, kart taklan yarklar

    specify spesifay tanmlamak, belirtmek

    speech spii konuma

    sprite sprayt grafik programclnda kullanlan hareketli nesneler

    SQL es kyu el Structured Query Language Yap sal Sorgulama Dili

    stack stek yn, geici bellek alan

    status steyts durum; statement deyim, komut

    structure strakr yap

    subdirectory sabdayrektri alt dizin, klasr

    substitute sabstityut bakasnn yerine koymak

    success skses baar

    supervisor supvayzr yetkili

    support sport destek

    surface sfs yzey, grn

    suspend sspend askya almakswitch svi anahtar, yer deitirmek

    terminal trminl son, ubirim

    thread tred kanal

    toggle togl iki eyin birbirleri ile yer deitirmeleri (swap)

    track trek iz, fiziksel disk dairesi

    true tru mantksal doru

    truetype trutayp boyutu deitirilebilir yaz tipi

    try tray denemek

    tutorial tyutril reticiunit yunit kod yazlan alan

    utility yutiliti yardmc programlar

    variable veraybl deiken

    virus vayrs virs

    volume volyum src

    warning worning uyar

    watch vo alma annda deikenleri seyretmek

    SZLK

  • 8/9/2019 Biliim Teknolojileri - 16 - Temel Algoritmalar

    38/47

    34

    KOD RNEKLERisual Basic dilinde ekleme sralamas rnei

    Private Sub Button1_Click

    'Kurulum ksmDim Maksimum As Integer = 5

    Dim Dizi(Maksimum) As Integer

    Dim i, j, DiziDongusu, Gecici, Dur, Dur2, Sayac As Integer

    Dim metin As String

    'Rasgele komutu iin Randomize() ekledik

    Randomize()

    ListBox1.Items.Clear()

    'lk deerler atanyormetin = ""

    For i = 1 To Maksimum

    Dizi(i) = Rnd(1) * 99 + 1

    metin = metin & Dizi(i) & " "

    Next i

    ListBox1.Items.Add(metin)

    'Sralama dngs alyorFor DiziDongusu = 2 To Maksimum

    Gecici = Dizi(DiziDongusu)

    D u r = 0 : S a y a c = 1 : D u r 2 = 0

    While (Dur2 = 0)

    If Gecici < Dizi(Sayac) Then

    For j = DiziDongusu To Sayac Step -1

    Dizi(j) = Dizi(j - 1)

    Next jDizi(Sayac) = Gecici

    D u r = 1

    End If

    Sayac = Sayac + 1

    If (Dur = 1) Or (Sayac = DiziDongusu) Then Dur2 = 1

    End While

    'Ekrana ara deiiklikler yanstlyormetin = ""

    For i = 1 To Maksimum

    metin = metin & Dizi(i) & " "

    Next i

    ListBox1.Items.Add(metin)

    Next DiziDongusu

    End Sub

    KOD RNEKLER

  • 8/9/2019 Biliim Teknolojileri - 16 - Temel Algoritmalar

    39/47

    35

    Visual Basic dilinde balon sralamas rnei

    'Kurulum ksmDim Maksimum As Integer = 5

    Dim Dizi(Maksimum) As Integer

    Dim i, j, Gecici, Dur, Gec, Degistirme As Integer

    Dim metin As String

    'Rasgele komutu iin Randomize() ekledik

    Randomize()

    ListBox1.Items.Clear()

    'lk deerler atanyormetin = ""

    For i = 1 To Maksimum

    Dizi(i) = Rnd(1) * 99 + 1

    metin = metin & Dizi(i) & " "

    Next iListBox1.Items.Add(metin)

    'Sralama dngs alyorG e c = 1

    D u r = 0

    While (Dur = 0)

    Degistirme = 1

    For i = 1 To (Maksimum - Gec)

    If Dizi(i) > Dizi(i + 1) Then

    Gecici = Dizi(i)

    Dizi(i) = Dizi(i + 1)

    Dizi(i + 1) = Gecici

    Degistirme = 0

    End If

    Next imetin = ""

    For j = 1 To Maksimum

    metin = metin & Dizi(j) & " "

    Next j

    ListBox1.Items.Add(metin)

    If Degistirme = 1 Then D u r = 1

    End While

  • 8/9/2019 Biliim Teknolojileri - 16 - Temel Algoritmalar

    40/47

    36

    Visual Basic dilinde kabuk sralamas rnei

    'Kurulum ksmDim Maksimum As Integer = 5

    Dim Dizi(Maksimum) As Integer

    Dim i, Gecici, Dur, Gec, X, Sinir As Integer

    Dim metin As String

    'Rasgele komutu iin Randomize() ekledik

    Randomize()

    ListBox1.Items.Clear()

    'lk deerler atanyor

    metin = ""

    For i = 1 To Maksimum

    Dizi(i) = Rnd(1) * 99 + 1

    metin = metin & Dizi(i) & " "

    Next iListBox1.Items.Add(metin)

    'Sralama dngs alyorX = Int(Maksimum / 2)

    While X > 0

    D u r = 0

    Sinir = Maksimum - X

    While (Dur = 0)

    G e c = 0

    For i = 1 To Sinir

    If Dizi(i) > Dizi(i + X) Then

    Gecici = Dizi(i)

    Dizi(i) = Dizi(i + X)

    Dizi(i + X) = Gecici

    G e c = i

    End If

    Next i

    Sinir = Gec - X

    If Gec = 0 Then D u r = 1

    End While

    metin = ""

    For i = 1 To Maksimum

    metin = metin & Dizi(i) & " "

    Next i

    ListBox1.Items.Add(metin)

    X = Int(X / 2)

    End While

  • 8/9/2019 Biliim Teknolojileri - 16 - Temel Algoritmalar

    41/47

    37

    Visual Basic dilinde zl sralama rnei

    Public Class Form1

    'Kurulum ksm (global deikenler)Dim Maksimum As Integer = 5

    Dim Dizi(Maksimum) As Integer

    Sub hizliSirala(ByVal Baslangic, ByVal Bitis)

    'Alt programmzDim metin As String

    Dim i, J, k, X, Gecici As Integer

    i = Baslangic : J = Bitis

    X = Dizi(Int((i + J) / 2))

    While i < = J

    While Dizi(i) < X

    i = i + 1

    End While

    While Dizi(J) > XJ = J - 1

    End While

    If i < = J Then

    Gecici = Dizi(i): Dizi(i) = Dizi(J): Dizi(J) = Gecici

    i = i + 1

    J = J - 1

    End If

    End While

    metin = ""

    For k = 1 To Maksimum

    metin = metin & Dizi(k) & " "

    Next k

    ListBox1.Items.Add(metin)

    'Alt program kendini aryorIf J > Baslangic Then hizliSirala(Baslangic, J)

    If i < Bitis Then hizliSirala(i, Bitis)

    End Sub

    Private Sub Button1_Click

    'Srala dmesi kodlar (ana program)Dim metin As String

    Dim i As Integer

    Randomize()

    ListBox1.Items.Clear()

    'lk deerler atanyor

    metin = ""For i = 1 To Maksimum

    Dizi(i) = Rnd(1) * 99 + 1

    metin = metin & Dizi(i) & " "

    Next i

    ListBox1.Items.Add(metin)

    'Sralama alt program arlyorhizliSirala(1, Maksimum)

    metin = ""

    For i = 1 To Maksimum

    metin = metin & Dizi(i) & " "

    Next i

    ListBox1.Items.Add(metin)

    End Sub

  • 8/9/2019 Biliim Teknolojileri - 16 - Temel Algoritmalar

    42/47

    38

    Visual Basic dilinde azr srala a komutu rnei

    Dim Maksimum As Integer = 5

    Dim Dizi(Maksimum) As Integer

    Dim i As Integer

    Dim metin As String

    Randomize()

    ListBox1.Items.Clear()

    'lk deerler atanyormetin = ""

    For i = 1 To Maksimum

    Dizi(i) = Rnd(1) * 99 + 1

    metin = metin & Dizi(i) & " "

    Next i

    ListBox1.Items.Add(metin)

    'hazr komut kullanyoruzArray.Sort(Dizi, 1, Maksimum)

    metin = ""

    For i = 1 To Maksimum

    metin = metin & Dizi(i) & " "

    Next i

    ListBox1.Items.Add(metin)

  • 8/9/2019 Biliim Teknolojileri - 16 - Temel Algoritmalar

    43/47

    39

    Visual Basic dilinde sral arama rnei

    Dim Maksimum As Integer = 4

    Dim Dizi(), I, Bulundu, Aranan As Integer

    Private Sub Form1_Load

    'Programn al annda alan komutlar

    Dim Metin As String

    ReDim Dizi(Maksimum)

    Randomize()

    Dizi(0) = Int(Rnd(1) * 10) + 1

    Metin = Dizi(0)

    TextBox1.Text = Metin

    For I = 1 To Maksimum

    Dizi(I) = Dizi(I - 1) + Int(Rnd(1) * 10) + 1Metin = Metin & " " & Dizi(I)

    Next I

    Label2.Text = Metin

    End Sub

    Private Sub Button1_Click

    'Bul dmesinin komutlar

    Aranan = TextBox1.Text

    Bulundu = 0

    For I = 0 To Maksimum

    If Dizi(I) = Aranan Then

    Bulundu = 1

    MsgBox(I + 1 & ". elemanda bulundu")

    Exit For

    End If

    Next I

    If Bulundu = 0 Then MsgBox("Aranan deer bulunamad.")End Sub

  • 8/9/2019 Biliim Teknolojileri - 16 - Temel Algoritmalar

    44/47

    40

    Visual Basic dilinde ikilik arama rnei

    Dim Maksimum As Integer = 9

    Dim Dizi(), I, Aranan As Integer

    Private Sub Form1_Load

    'Programn al annda alan komutlarDim Metin As String

    ReDim Dizi(Maksimum)

    Randomize()

    Dizi(0) = Int(Rnd(1) * 10) + 1

    Metin = Dizi(0)

    For I = 1 To Maksimum

    Dizi(I) = Dizi(I - 1) + Int(Rnd(1) * 10) + 1

    Metin = Metin & " " & Dizi(I)

    Next ILabel2.Text = Metin

    TextBox1.Text = Dizi(Int(Rnd(0) * Maksimum))

    End Sub

    Private Sub Button1_Click

    'Bul dmesinin komutlarDim Dur, Sol, Sag, Yari As Integer

    Aranan = TextBox1.Text

    S o l = 0

    Sag = Maksimum

    D u r = 0

    While D u r = 0

    Yari = Int((Sol + Sag) / 2)

    If Aranan < Dizi(Yari) Then

    Sag = Yari - 1

    Else

    Sol = Yari + 1

    End If

    If (Aranan = Dizi(Yari) Or Sol > Sag) Then

    D u r = 1

    Exit While

    End If

    End While

    If (Aranan = Dizi(Yari)) Then

    MsgBox(Yari + 1 & ". elemanda bulundu")

    Else

    MsgBox("Aranan deer bulunamad.")End If

    End Sub

  • 8/9/2019 Biliim Teknolojileri - 16 - Temel Algoritmalar

    45/47

    41

    Visual Basic dilinde kyma arama rnei

    Dim Maksimum As Integer = 5

    Dim Dizi(,) As Integer

    Dim i, j, Aranan As Integer

    Private Sub Form1_Load

    ReDim Dizi(Maksimum, Maksimum)

    Dim kiymaDegeri, Sayac, Saklanan, Dur As Integer

    Dim metin As String

    Randomize()

    For i = 1 To Maksimum 'dikey deerler

    For j = 1 To Maksimum 'yatay deerlerDizi(i, j) = 0

    Next j

    Next iDataGridView1.Rows.Add(5)

    Sayac = 1 : metin = ""

    For J = 1 To Maksimum

    D u r = 0

    Saklanan = Int(Rnd(1) * 100) + 1

    kiymaDegeri = Saklanan - (Int(Saklanan / 5) * 5)

    While Dur 1

    If Dizi(Sayac, kiymaDegeri) = 0 Then

    Dizi(Sayac, kiymaDegeri) = Saklanan

    D u r = 1

    Else

    Sayac += 1

    End If

    DataGridView1.Item(kiymaDegeri, Sayac - 1).Value = Saklanan

    End While

    metin &= Saklanan & Space$(1)

    Next J

    Label2.Text = metin

    End Sub

    Private Sub Button1_Click

    Dim kiymaDegeri, Aranan As Integer

    Aranan = TextBox1.Text

    kiymaDegeri = Aranan - (Int(Aranan / 5) * 5) + 1

    If Dizi(1, kiymaDegeri) = 0 Then

    MsgBox("Aranan deer bulunamad.")

    ElseMsgBox(kiymaDegeri & ". stunda bulundu")

    End If

    End Sub

  • 8/9/2019 Biliim Teknolojileri - 16 - Temel Algoritmalar

    46/47

    42

    NERLEN KAYNAKLAR blogs.borland.com/corbindunn/archive/2004/09/29/1483.aspx en.wikipedia.org/wiki/Fractal fraktaller.tripod.com googleresearch.blogspot.com/2006/06/extra-extra-read-all-about-it-nearly.html main.linuxfocus.org/Turkce/March2003/article273.shtml ostermiller.org/ti82 ozguryazilim.org tr.wikipedia.org/wiki/Big-O tr.wikipedia.org/wiki/Google_Earth tr.wikipedia.org/wiki/Seyyar_satc_problemi www.algosort.com www.automatedqa.com/products/aqtime www.ba.infn.it/~zito/plaw.html www.belgeler.org/howto/acik-kod-yazilimcisi.html www.codeproject.com www.cs.ubc.ca/~harrison/Java www.developerfusion.co.uk/show/3824 www.devx.com/vb2themax/Article/19900?type=kbArticle&trk=MSCP www.e-optimization.com www.iett.gov.tr

    www.ileriseviye.org/Makale/lisperati-tr www.ileriseviye.org/arasayfa.php?inode=kadinlar.html www.inner-smile.com/delphifaq.phtml www.iti.fh-flensburg.de/lang/algorithmen/sortieren www.mcs.surrey.ac.uk/Personal/R.Knott/Fibonacci www.papatya.info.tr/bilisimAnsiklopedisi.htm www.paulgraham.com/spam.html www.softwarefederation.com/fractal.html www.techtoolblog.com/archives/195-free-online-programming-books www.telekom.gov.tr www.turkyol.com

    www.yazilimci.org/content/view/29/31

    NERLEN KAYNAKLAR

  • 8/9/2019 Biliim Teknolojileri - 16 - Temel Algoritmalar

    47/47