{"id":34082,"date":"2025-11-11T00:01:03","date_gmt":"2025-11-10T21:01:03","guid":{"rendered":"https:\/\/fatihsoysal.com\/blog\/arama-algoritmalari-bolum-1-ikili-arama-ve-arama-alanini-kesme-sanati\/"},"modified":"2025-11-11T00:01:03","modified_gmt":"2025-11-10T21:01:03","slug":"arama-algoritmalari-bolum-1-ikili-arama-ve-arama-alanini-kesme-sanati","status":"publish","type":"post","link":"https:\/\/fatihsoysal.com\/blog\/arama-algoritmalari-bolum-1-ikili-arama-ve-arama-alanini-kesme-sanati\/","title":{"rendered":"Arama Algoritmalar\u0131 B\u00f6l\u00fcm 1: \u0130kili Arama ve Arama Alan\u0131n\u0131 Kesme Sanat\u0131"},"content":{"rendered":"<p><meta name=\"description\" content=\"Veri y\u0131\u011f\u0131nlar\u0131 aras\u0131nda h\u0131zl\u0131 ve etkili arama yapman\u0131n s\u0131rr\u0131n\u0131 ke\u015ffedin. \u0130kili arama algoritmas\u0131 ile arama alan\u0131n\u0131 nas\u0131l ak\u0131ll\u0131ca keserek performans\u0131n\u0131z\u0131 art\u0131raca\u011f\u0131n\u0131z\u0131 \u00f6\u011frenin.\"><\/p>\n<p><body><\/p>\n<p>G\u00fcn\u00fcm\u00fcz dijital d\u00fcnyas\u0131nda, elimizin alt\u0131nda devasa veri y\u0131\u011f\u0131nlar\u0131 bulunuyor. Bir e-ticaret sitesinde arad\u0131\u011f\u0131n\u0131z \u00fcr\u00fcn\u00fc bulmaktan, devasa bir veritaban\u0131nda belirli bir kayda ula\u015fmaya kadar pek \u00e7ok senaryoda, veriler i\u00e7inde h\u0131zl\u0131ca gezinme yetene\u011fi kritik \u00f6nem ta\u015f\u0131r. Peki, milyarlarca veri noktas\u0131 aras\u0131nda i\u011fne aramak gibi hissettirmeden arad\u0131\u011f\u0131m\u0131z\u0131 an\u0131nda nas\u0131l bulabiliriz? \u0130\u015fte bu sorunun cevab\u0131, g\u00fc\u00e7l\u00fc arama algoritmalar\u0131nda, \u00f6zellikle de konumuz olan \u0130kili Arama (Binary Search) algoritmas\u0131nda gizli. Bu makalede, ikili araman\u0131n temel prensiplerini, nas\u0131l \u00e7al\u0131\u015ft\u0131\u011f\u0131n\u0131, ger\u00e7ek d\u00fcnyadaki uygulamalar\u0131n\u0131 ve bu &#8220;arama alan\u0131n\u0131 kesme sanat\u0131&#8221;n\u0131n ard\u0131ndaki performans\u0131 ad\u0131m ad\u0131m inceleyece\u011fiz. Haydi, verimli araman\u0131n kap\u0131lar\u0131n\u0131 aralayal\u0131m!<\/p>\n<p>\u0130kili arama, s\u0131ral\u0131 bir koleksiyonda (genellikle bir dizi veya liste) belirli bir \u00f6\u011fenin konumunu bulmak i\u00e7in kullan\u0131lan son derece verimli bir algoritmad\u0131r. Temel \u00e7al\u0131\u015fma prensibi olduk\u00e7a sezgiseldir: T\u0131pk\u0131 bir telefon rehberinde veya s\u00f6zl\u00fckte isim aramak gibidir. E\u011fer Mehmet ismini ar\u0131yorsan\u0131z, rehberin en ba\u015f\u0131ndan ba\u015flay\u0131p her bir sayfay\u0131 kontrol etmezsiniz (bu, Do\u011frusal Arama olurdu). Bunun yerine, rehberi kabaca ortadan a\u00e7ar, Mehmet&#8217;in a\u00e7t\u0131\u011f\u0131n\u0131z sayfan\u0131n ba\u015f harflerinden \u00f6nce mi sonra m\u0131 geldi\u011fine bakars\u0131n\u0131z. E\u011fer \u00f6nce geliyorsa, rehberin ilk yar\u0131s\u0131na odaklan\u0131rs\u0131n\u0131z. E\u011fer sonra geliyorsa, ikinci yar\u0131s\u0131na. Bu i\u015flemi arad\u0131\u011f\u0131n\u0131z ismi bulana kadar veya arayacak yer kalmayana kadar tekrarlars\u0131n\u0131z. Bu &#8220;alan\u0131 ikiye b\u00f6lme&#8221; stratejisi, ikili araman\u0131n kalbinde yer al\u0131r.<\/p>\n<p>Peki, neden &#8220;hayat kurtar\u0131r&#8221;? Cevap, performansta yatar. Geleneksel Do\u011frusal Arama (Linear Search) algoritmas\u0131, bir listedeki her eleman\u0131 tek tek kontrol eder. En k\u00f6t\u00fc durumda, arad\u0131\u011f\u0131n\u0131z \u00f6\u011fe listenin en sonundaysa veya listede yoksa, t\u00fcm listeyi taraman\u0131z gerekir. Bu da N elemanl\u0131 bir liste i\u00e7in O(N) zaman karma\u015f\u0131kl\u0131\u011f\u0131 anlam\u0131na gelir. Yani, liste boyutu b\u00fcy\u00fcd\u00fck\u00e7e arama s\u00fcresi de do\u011frusal olarak artar. Oysa ikili arama, her ad\u0131mda arama alan\u0131n\u0131 yar\u0131ya indirir. Bu, N elemanl\u0131 bir liste i\u00e7in O(log N) zaman karma\u015f\u0131kl\u0131\u011f\u0131na tekab\u00fcl eder. Logaritmik karma\u015f\u0131kl\u0131k, liste boyutu ne kadar b\u00fcy\u00fck olursa olsun, arama s\u00fcresinin \u00e7ok yava\u015f artmas\u0131 demektir. \u00d6rne\u011fin, 1 milyon elemanl\u0131 bir listede do\u011frusal arama ortalama 500.000 ad\u0131mda sonu\u00e7 verirken, ikili arama en fazla 20 ad\u0131mda sonuca ula\u015f\u0131r. Bu muazzam fark, \u00f6zellikle b\u00fcy\u00fck veri k\u00fcmeleriyle \u00e7al\u0131\u015f\u0131rken ikili araman\u0131n neden vazge\u00e7ilmez oldu\u011funu a\u00e7\u0131k\u00e7a g\u00f6sterir.<\/p>\n<p>Ancak, ikili araman\u0131n temel bir \u00f6n ko\u015fulu vard\u0131r: Veri k\u00fcmesi <strong>s\u0131ral\u0131 olmal\u0131d\u0131r<\/strong>. E\u011fer verileriniz s\u0131ral\u0131 de\u011filse, ikili arama do\u011fru \u00e7al\u0131\u015fmaz ve yanl\u0131\u015f sonu\u00e7lar \u00fcretebilir. Bu nedenle, ikili arama yapmadan \u00f6nce verilerinizi artan veya azalan bir d\u00fczende s\u0131ralad\u0131\u011f\u0131n\u0131zdan emin olmal\u0131s\u0131n\u0131z. S\u0131ralama i\u015flemi ba\u015fl\u0131 ba\u015f\u0131na bir maliyet olsa da, \u00f6zellikle ayn\u0131 veri k\u00fcmesi \u00fczerinde birden fazla arama yap\u0131lacaksa, s\u0131ralama maliyetini bir kez \u00f6deyip ard\u0131ndan ikili araman\u0131n sundu\u011fu performanstan s\u00fcrekli faydalanmak \u00e7ok daha avantajl\u0131d\u0131r. \u00d6rne\u011fin, bir veritaban\u0131nda indeksler olu\u015fturulurken veriler s\u0131ral\u0131 tutulur ve bu sayede ikili arama mant\u0131\u011f\u0131yla \u00e7ok h\u0131zl\u0131 sorgular yap\u0131labilir.<\/p>\n<p>\u00d6zetle, ikili arama; h\u0131z\u0131, verimlili\u011fi ve basit mant\u0131\u011f\u0131 sayesinde bilgisayar bilimlerinin temel ta\u015flar\u0131ndan biridir. G\u00fcnl\u00fck hayatta fark\u0131nda olmadan kulland\u0131\u011f\u0131m\u0131z bir\u00e7ok sistemin arkas\u0131nda yatan bu prensibi anlamak, algoritmik d\u00fc\u015f\u00fcnme becerilerinizi geli\u015ftirmek i\u00e7in harika bir ba\u015flang\u0131\u00e7 noktas\u0131d\u0131r.<\/p>\n<h2>\u0130kili Arama Nas\u0131l \u00c7al\u0131\u015f\u0131r? Ad\u0131m Ad\u0131m Bir Rehber<\/h2>\n<p>\u0130kili arama algoritmas\u0131n\u0131n \u00e7al\u0131\u015fma mant\u0131\u011f\u0131n\u0131 daha iyi anlamak i\u00e7in, ad\u0131m ad\u0131m bir s\u00fcre\u00e7 izleyelim. Bu s\u00fcre\u00e7, herhangi bir programlama dilinde kolayca uygulanabilir ve mant\u0131\u011f\u0131 evrenseldir. Algoritman\u0131n ana fikri, her ad\u0131mda arama aral\u0131\u011f\u0131n\u0131 daraltmakt\u0131r. \u0130\u015fte temel ad\u0131mlar:<\/p>\n<ol>\n<li><strong>Ba\u015flang\u0131\u00e7 Noktas\u0131 Belirleme (Sol ve Sa\u011f \u0130\u015faret\u00e7iler):<\/strong> \u0130lk olarak, arama yapaca\u011f\u0131m\u0131z s\u0131ral\u0131 listenin en solunu (ba\u015flang\u0131\u00e7 indeksi) ve en sa\u011f\u0131n\u0131 (biti\u015f indeksi) i\u015faretleyen iki de\u011fi\u015fken tan\u0131mlar\u0131z. Genellikle bu de\u011fi\u015fkenlere <code>sol<\/code> (low) ve <code>sa\u011f<\/code> (high) denir.<\/li>\n<li><strong>Ortay\u0131 Hesaplama:<\/strong> Arama aral\u0131\u011f\u0131n\u0131n tam ortas\u0131ndaki eleman\u0131n indeksini buluruz. Bu genellikle <code>orta = (sol + sa\u011f) \/ 2<\/code> form\u00fcl\u00fc ile yap\u0131l\u0131r. Ancak, b\u00fcy\u00fck indeks de\u011ferlerinde tam say\u0131 ta\u015fmas\u0131n\u0131 \u00f6nlemek i\u00e7in <code>orta = sol + (sa\u011f - sol) \/ 2<\/code> form\u00fcl\u00fc daha g\u00fcvenli kabul edilir. Sonu\u00e7 her zaman tam say\u0131 olarak a\u015fa\u011f\u0131 yuvarlan\u0131r (floor).<\/li>\n<li><strong>Ortadaki Eleman\u0131 Kar\u015f\u0131la\u015ft\u0131rma:<\/strong> Buldu\u011fumuz orta indeksteki eleman\u0131, arad\u0131\u011f\u0131m\u0131z hedef de\u011ferle kar\u015f\u0131la\u015ft\u0131r\u0131r\u0131z:\n<ul>\n<li><strong>E\u011fer ortadaki eleman hedef de\u011fere e\u015fitse:<\/strong> Harika! Arad\u0131\u011f\u0131m\u0131z\u0131 bulduk. Algoritma burada sona erer ve orta indeksini d\u00f6nd\u00fcr\u00fcr\u00fcz.<\/li>\n<li><strong>E\u011fer ortadaki eleman hedef de\u011ferden k\u00fc\u00e7\u00fckse:<\/strong> Bu durumda, hedef de\u011fer ortadaki elemandan daha b\u00fcy\u00fck olmal\u0131d\u0131r. Demek ki arad\u0131\u011f\u0131m\u0131z eleman, mevcut arama aral\u0131\u011f\u0131n\u0131n sa\u011f yar\u0131s\u0131nda yer al\u0131yor. Bu durumda, <code>sol<\/code> i\u015faret\u00e7imizi <code>orta + 1<\/code>&#8216;e g\u00fcncelleyerek arama alan\u0131n\u0131 sa\u011f yar\u0131ya daralt\u0131r\u0131z.<\/li>\n<li><strong>E\u011fer ortadaki eleman hedef de\u011ferden b\u00fcy\u00fckse:<\/strong> Tam tersi bir durum. Hedef de\u011fer ortadaki elemandan daha k\u00fc\u00e7\u00fck olmal\u0131d\u0131r. Bu durumda, arad\u0131\u011f\u0131m\u0131z eleman mevcut arama aral\u0131\u011f\u0131n\u0131n sol yar\u0131s\u0131nda yer al\u0131yor. <code>sa\u011f<\/code> i\u015faret\u00e7imizi <code>orta - 1<\/code>&#8216;e g\u00fcncelleyerek arama alan\u0131n\u0131 sol yar\u0131ya daralt\u0131r\u0131z.<\/li>\n<\/ul>\n<\/li>\n<li><strong>Tekrarlama ve Sonland\u0131rma:<\/strong> <code>sol<\/code> i\u015faret\u00e7isi <code>sa\u011f<\/code> i\u015faret\u00e7isinden k\u00fc\u00e7\u00fck veya e\u015fit oldu\u011fu s\u00fcrece (yani, arama aral\u0131\u011f\u0131nda hala elemanlar oldu\u011fu s\u00fcrece) 2. ve 3. ad\u0131mlar\u0131 tekrarlar\u0131z. E\u011fer <code>sol<\/code> i\u015faret\u00e7isi <code>sa\u011f<\/code> i\u015faret\u00e7isini ge\u00e7erse (<code>sol > sa\u011f<\/code>), bu demektir ki arama aral\u0131\u011f\u0131 tamamen darald\u0131 ve arad\u0131\u011f\u0131m\u0131z eleman listede bulunamad\u0131. Bu durumda algoritma sona erer ve genellikle -1 gibi bir &#8220;bulunamad\u0131&#8221; de\u011feri d\u00f6nd\u00fcr\u00fcr.<\/li>\n<\/ol>\n<div class=\"expert-tip\">\n  Uzman \u0130pucu: Orta indeksi hesaplarken <code>orta = Math.floor(sol + (sa\u011f - sol) \/ 2)<\/code> ifadesini kullanmak, \u00f6zellikle \u00e7ok b\u00fcy\u00fck dizilerde indeks de\u011ferlerinin toplam\u0131n\u0131n JavaScript&#8217;in maksimum tam say\u0131 de\u011ferini a\u015fmas\u0131n\u0131 engelleyebilir ve daha g\u00fcvenli bir y\u00f6ntemdir. Basit uygulamalarda <code>Math.floor((sol + sa\u011f) \/ 2)<\/code> yeterli olsa da, profesyonel kodlarda ilk y\u00f6ntem tercih edilir.\n<\/div>\n<h3>Bir \u00d6rnek \u00dczerinden \u0130kili Arama Uygulamas\u0131<\/h3>\n<p>\u015eimdi bu ad\u0131mlar\u0131 somut bir \u00f6rnek \u00fczerinde g\u00f6relim. Diyelim ki elimizde a\u015fa\u011f\u0131daki s\u0131ral\u0131 dizi var ve biz <code>23<\/code> say\u0131s\u0131n\u0131 ar\u0131yoruz:<\/p>\n<pre><code>\nconst dizi = [2, 5, 8, 12, 16, 23, 38, 56, 72, 91];\nconst hedef = 23;\n\/\/ \u0130ndeksler:     0  1  2   3   4   5   6   7   8   9\n<\/pre>\n<p><\/code><\/p>\n<p>\u0130kili arama fonksiyonumuz \u015f\u00f6yle g\u00f6r\u00fcnecektir:<\/p>\n<pre><code>\nfunction ikiliArama(dizi, hedef) {\n    let sol = 0;\n    let sag = dizi.length - 1;\n\n    while (sol <= sag) {\n        let orta = Math.floor(sol + (sag - sol) \/ 2); \/\/ G\u00fcvenli orta hesaplama\n\n        \/\/ E\u011fer ortadaki eleman hedefse, indeksini d\u00f6nd\u00fcr\n        if (dizi[orta] === hedef) {\n            return orta;\n        }\n\n        \/\/ E\u011fer ortadaki eleman hedeften k\u00fc\u00e7\u00fckse, sol yar\u0131y\u0131 atla\n        else if (dizi[orta] < hedef) {\n            sol = orta + 1;\n        }\n\n        \/\/ E\u011fer ortadaki eleman hedeften b\u00fcy\u00fckse, sa\u011f yar\u0131y\u0131 atla\n        else {\n            sag = orta - 1;\n        }\n    }\n\n    \/\/ E\u011fer d\u00f6ng\u00fc biterse ve hedef bulunamazsa -1 d\u00f6nd\u00fcr\n    return -1;\n}\n\n\/\/ \u00d6rnek kullan\u0131m:\n\/\/ console.log(\"23 say\u0131s\u0131n\u0131n indeksi:\", ikiliArama(dizi, 23)); \/\/ \u00c7\u0131kt\u0131: 5\n\/\/ console.log(\"100 say\u0131s\u0131n\u0131n indeksi:\", ikiliArama(dizi, 100)); \/\/ \u00c7\u0131kt\u0131: -1\n<\/pre>\n<p><\/code><\/p>\n<p>\u015eimdi <code>23<\/code> say\u0131s\u0131n\u0131 ararken ad\u0131mlar\u0131 takip edelim:<\/p>\n<ul>\n<li><strong>Ad\u0131m 1:<\/strong>\n<ul>\n<li><code>sol = 0<\/code>, <code>sag = 9<\/code><\/li>\n<li><code>orta = Math.floor(0 + (9 - 0) \/ 2) = 4<\/code><\/li>\n<li><code>dizi[4]<\/code> de\u011feri <code>16<\/code>. <code>16 < 23<\/code> oldu\u011fu i\u00e7in, <code>sol = orta + 1 = 5<\/code> olarak g\u00fcncellenir.<\/li>\n<li>Arama aral\u0131\u011f\u0131 \u015fimdi <code>[23, 38, 56, 72, 91]<\/code> (indeksler 5'ten 9'a)<\/li>\n<\/ul>\n<\/li>\n<li><strong>Ad\u0131m 2:<\/strong>\n<ul>\n<li><code>sol = 5<\/code>, <code>sag = 9<\/code><\/li>\n<li><code>orta = Math.floor(5 + (9 - 5) \/ 2) = 7<\/code><\/li>\n<li><code>dizi[7]<\/code> de\u011feri <code>56<\/code>. <code>56 > 23<\/code> oldu\u011fu i\u00e7in, <code>sag = orta - 1 = 6<\/code> olarak g\u00fcncellenir.<\/li>\n<li>Arama aral\u0131\u011f\u0131 \u015fimdi <code>[23, 38]<\/code> (indeksler 5'ten 6'ya)<\/li>\n<\/ul>\n<\/li>\n<li><strong>Ad\u0131m 3:<\/strong>\n<ul>\n<li><code>sol = 5<\/code>, <code>sag = 6<\/code><\/li>\n<li><code>orta = Math.floor(5 + (6 - 5) \/ 2) = 5<\/code><\/li>\n<li><code>dizi[5]<\/code> de\u011feri <code>23<\/code>. <code>23 === 23<\/code> oldu\u011fu i\u00e7in, hedef bulundu! Fonksiyon <code>5<\/code> indeksini d\u00f6nd\u00fcr\u00fcr.<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<p>G\u00f6rd\u00fc\u011f\u00fcn\u00fcz gibi, sadece \u00fc\u00e7 ad\u0131mda 10 elemanl\u0131 bir dizide arad\u0131\u011f\u0131m\u0131z de\u011feri bulabildik. Bu \u00f6rnek, ikili araman\u0131n \"arama alan\u0131n\u0131 kesme\" stratejisinin ne kadar etkili oldu\u011funu somut bir \u015fekilde g\u00f6zler \u00f6n\u00fcne seriyor. Bu y\u00f6ntem sayesinde, b\u00fcy\u00fck veri setlerinde bile h\u0131zl\u0131 sonu\u00e7lar elde etmek m\u00fcmk\u00fcn hale geliyor.<\/p>\n<h2>Ger\u00e7ek D\u00fcnya Senaryolar\u0131nda \u0130kili Arama Nerede Kullan\u0131l\u0131r?<\/h2>\n<p>\u0130kili arama, teorik bir kavram olmaktan \u00f6te, g\u00fcnl\u00fck hayatta kulland\u0131\u011f\u0131m\u0131z bir\u00e7ok sistemin temelinde yatan g\u00fc\u00e7l\u00fc bir ara\u00e7t\u0131r. Fark\u0131nda olmasak da, bu algoritma sayesinde dijital deneyimlerimiz \u00e7ok daha ak\u0131c\u0131 ve h\u0131zl\u0131 hale geliyor. \u0130\u015fte ikili araman\u0131n kullan\u0131ld\u0131\u011f\u0131 baz\u0131 ger\u00e7ek d\u00fcnya senaryolar\u0131 ve bir vaka analizi:<\/p>\n<ul>\n<li><strong>Veritaban\u0131 \u0130ndeksleri:<\/strong> Veritabanlar\u0131, milyarlarca veri kayd\u0131n\u0131 depolayabilir. Bir kayd\u0131 h\u0131zl\u0131ca bulmak i\u00e7in veritaban\u0131 motorlar\u0131 B-a\u011fa\u00e7lar\u0131 (B-trees) gibi s\u0131ral\u0131 veri yap\u0131lar\u0131 kullan\u0131r. Bu a\u011fa\u00e7lar, temelde ikili arama prensibiyle \u00e7al\u0131\u015f\u0131r; belirli bir de\u011feri ararken a\u011fac\u0131n dallar\u0131 aras\u0131nda \"arama alan\u0131n\u0131 keserek\" h\u0131zla hedefe ula\u015f\u0131r. MySQL veya PostgreSQL gibi pop\u00fcler veritabanlar\u0131nda indeksler, sorgu performans\u0131n\u0131 art\u0131rmak i\u00e7in ikili arama mant\u0131\u011f\u0131n\u0131 kullan\u0131r.<\/li>\n<li><strong>S\u00f6zl\u00fck Arama ve Otomatik Tamamlama:<\/strong> \u00c7evrimi\u00e7i s\u00f6zl\u00fckler, kelime da\u011farc\u0131\u011f\u0131 uygulamalar\u0131 veya arama motorlar\u0131ndaki otomatik tamamlama \u00f6zellikleri, b\u00fcy\u00fck kelime listeleri \u00fczerinde h\u0131zl\u0131 arama yapmay\u0131 gerektirir. \u0130kili arama (veya t\u00fcrevleri), bir kelimenin varl\u0131\u011f\u0131n\u0131 kontrol etmek veya en yak\u0131n e\u015fle\u015fmeleri bulmak i\u00e7in kullan\u0131labilir.<\/li>\n<li><strong>Kitapl\u0131k ve Dosya Sistemleri:<\/strong> B\u00fcy\u00fck bir dijital kitapl\u0131kta (e-kitaplar veya m\u00fczik koleksiyonlar\u0131) belirli bir ba\u015fl\u0131\u011f\u0131 veya sanat\u00e7\u0131y\u0131 bulmak istedi\u011finizde, sistem arka planda s\u0131ral\u0131 bir dizin \u00fczerinde ikili arama benzeri bir algoritma \u00e7al\u0131\u015ft\u0131r\u0131r. Dosya sistemlerinde de, belirli bir dosyan\u0131n konumunu bulmak i\u00e7in dizin yap\u0131lar\u0131nda bu t\u00fcr optimize edilmi\u015f arama y\u00f6ntemleri kullan\u0131l\u0131r.<\/li>\n<li><strong>Oyun Geli\u015ftirme:<\/strong> \u00d6zellikle a\u00e7\u0131k d\u00fcnya oyunlar\u0131nda, belirli bir aral\u0131ktaki nesneleri veya karakterleri h\u0131zl\u0131ca bulmak gerekebilir. \u00d6rne\u011fin, bir oyuncunun g\u00f6r\u00fc\u015f alan\u0131 i\u00e7indeki d\u00fc\u015fmanlar\u0131 tespit etmek veya haritadaki belirli bir b\u00f6lgedeki kaynaklar\u0131 listelemek i\u00e7in optimize edilmi\u015f arama algoritmalar\u0131na ihtiya\u00e7 duyulur. \u0130kili arama, bu t\u00fcr senaryolarda performans\u0131 art\u0131rmak i\u00e7in kullan\u0131labilir.<\/li>\n<li><strong>Say\u0131sal Hesaplamalar:<\/strong> Bir aral\u0131kta belirli bir denklemin k\u00f6k\u00fcn\u00fc bulma (\u00f6rne\u011fin, k\u00f6k bulma algoritmalar\u0131) veya bir faiz oran\u0131n\u0131 iteratif olarak tahmin etme gibi say\u0131sal analiz g\u00f6revlerinde, arama aral\u0131\u011f\u0131n\u0131 s\u00fcrekli daraltan ikili arama prensibi uygulan\u0131r.<\/li>\n<\/ul>\n<p><strong>Vaka Analizi: B\u00fcy\u00fck Bir E-ticaret Sitesinde \u00dcr\u00fcn Arama Optimizasyonu<\/strong><\/p>\n<p>Hayal edin ki, y\u00fcz milyonlarca \u00fcr\u00fcn\u00fcn listelendi\u011fi k\u00fcresel bir e-ticaret sitesi i\u015fletiyorsunuz. Kullan\u0131c\u0131lar her saniye binlerce arama yap\u0131yor. E\u011fer her arama iste\u011finde do\u011frusal bir arama algoritmas\u0131 kullansayd\u0131n\u0131z, sunucular\u0131n\u0131z an\u0131nda a\u015f\u0131r\u0131 y\u00fcklenir ve siteniz kullan\u0131lamaz hale gelirdi. \u0130\u015fte burada ikili arama (veya benzeri optimize edilmi\u015f algoritmalar) devreye girer.<\/p>\n<p>E-ticaret siteleri, \u00fcr\u00fcnlerini genellikle \u00e7e\u015fitli kategorilere ve \u00f6zelliklere g\u00f6re indeksler. \u00d6rne\u011fin, \"telefonlar\", \"ayakkab\u0131lar\", \"elektronik\" gibi kategoriler ve \"marka\", \"fiyat\", \"boyut\" gibi \u00f6zellikler. Bu indeksler genellikle s\u0131ral\u0131 veri yap\u0131lar\u0131 olarak tutulur. Kullan\u0131c\u0131 bir \u00fcr\u00fcn arad\u0131\u011f\u0131nda (\u00f6rne\u011fin, \"Samsung Galaxy S23\"), sistem \u00f6nce \"telefonlar\" kategorisine ait indeksi a\u00e7ar. Bu indeks, \u00fcr\u00fcn adlar\u0131na g\u00f6re alfabetik olarak s\u0131ralanm\u0131\u015ft\u0131r. Ard\u0131ndan, ikili arama prensibiyle milyonlarca \u00fcr\u00fcn ad\u0131 aras\u0131ndan \"Samsung Galaxy S23\" veya benzeri anahtar kelimeler i\u00e7eren \u00fcr\u00fcnleri saniyeden k\u0131sa s\u00fcrede bulur.<\/p>\n<p>Bu s\u00fcre\u00e7, kullan\u0131c\u0131n\u0131n \"S\" harfini yazmas\u0131yla ba\u015flayan otomatik tamamlama \u00f6nerilerinde de kullan\u0131l\u0131r. Sistem, \"S\" ile ba\u015flayan t\u00fcm kelimelerin listesinde ikili arama yaparak ilgili \u00f6nerileri h\u0131zla getirir. E\u011fer arama alan\u0131 bu \u015fekilde ak\u0131ll\u0131ca kesilmeseydi, her bir harf giri\u015fi i\u00e7in t\u00fcm \u00fcr\u00fcn listesinin taranmas\u0131 gerekirdi ki bu da kabul edilemez bir gecikmeye yol a\u00e7ard\u0131. Bu optimizasyon sayesinde, kullan\u0131c\u0131lar istedikleri \u00fcr\u00fcne an\u0131nda ula\u015fabilir, site performans\u0131 y\u00fcksek kal\u0131r ve sat\u0131\u015flar artar.<\/p>\n<p>Bu \u00f6rnekler, ikili araman\u0131n sadece akademik bir kavram olmad\u0131\u011f\u0131n\u0131, ayn\u0131 zamanda modern yaz\u0131l\u0131m ve teknoloji d\u00fcnyas\u0131nda performans ve kullan\u0131c\u0131 deneyimi i\u00e7in kritik bir rol oynad\u0131\u011f\u0131n\u0131 a\u00e7\u0131k\u00e7a g\u00f6stermektedir.<\/p>\n<h2>\u0130kili Arama Algoritmas\u0131n\u0131n Performans Analizi: Neden Bu Kadar H\u0131zl\u0131?<\/h2>\n<p>\u0130kili araman\u0131n \"neden bu kadar h\u0131zl\u0131\" oldu\u011fu sorusunun cevab\u0131, algoritman\u0131n zaman karma\u015f\u0131kl\u0131\u011f\u0131 analizinde yatar. Zaman karma\u015f\u0131kl\u0131\u011f\u0131, bir algoritman\u0131n giri\u015f boyutu (N) artt\u0131k\u00e7a \u00e7al\u0131\u015fma s\u00fcresinin nas\u0131l de\u011fi\u015fti\u011fini matematiksel olarak ifade eden bir \u00f6l\u00e7\u00fctt\u00fcr. \u0130kili arama i\u00e7in bu \u00f6l\u00e7\u00fct, O(log N) olarak ifade edilir ve bu, onu son derece verimli k\u0131lan \u015feydir.<\/p>\n<h3>O(log N) Ne Anlama Geliyor?<\/h3>\n<p>Logaritmik zaman karma\u015f\u0131kl\u0131\u011f\u0131 (O(log N)), algoritman\u0131n her ad\u0131mda arama alan\u0131n\u0131 sabit bir oranda (ikili arama i\u00e7in yar\u0131 yar\u0131ya) k\u00fc\u00e7\u00fcltmesi anlam\u0131na gelir. Bu, problemin boyutunun N'den N\/2'ye, N\/4'e, N\/8'e vb. d\u00fc\u015fmesi demektir. Ba\u015fka bir deyi\u015fle, algoritma, arama alan\u0131n\u0131 ka\u00e7 kez ikiye b\u00f6ld\u00fc\u011f\u00fcnde geriye tek bir \u00f6\u011fe kalaca\u011f\u0131n\u0131 bulmaya \u00e7al\u0131\u015f\u0131r. Bu say\u0131, logaritma 2 taban\u0131nda N'ye (log\u2082N) e\u015fittir.<\/p>\n<p>\u015eimdi N de\u011ferinin b\u00fcy\u00fckl\u00fc\u011f\u00fcne g\u00f6re zaman karma\u015f\u0131kl\u0131klar\u0131n\u0131 kar\u015f\u0131la\u015ft\u0131ral\u0131m:<\/p>\n<table>\n<thead>\n<tr>\n<th>N (Eleman Say\u0131s\u0131)<\/th>\n<th>Do\u011frusal Arama (O(N) - Max Ad\u0131m)<\/th>\n<th>\u0130kili Arama (O(log\u2082N) - Max Ad\u0131m)<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>10<\/td>\n<td>10<\/td>\n<td>4 (log\u208210 \u2248 3.32)<\/td>\n<\/tr>\n<tr>\n<td>100<\/td>\n<td>100<\/td>\n<td>7 (log\u2082100 \u2248 6.64)<\/td>\n<\/tr>\n<tr>\n<td>1.000<\/td>\n<td>1.000<\/td>\n<td>10 (log\u20821000 \u2248 9.96)<\/td>\n<\/tr>\n<tr>\n<td>1.000.000 (1 Milyon)<\/td>\n<td>1.000.000<\/td>\n<td>20 (log\u20821.000.000 \u2248 19.93)<\/td>\n<\/tr>\n<tr>\n<td>1.000.000.000 (1 Milyar)<\/td>\n<td>1.000.000.000<\/td>\n<td>30 (log\u20821.000.000.000 \u2248 29.89)<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>Tablodan da a\u00e7\u0131k\u00e7a g\u00f6r\u00fclece\u011fi \u00fczere, N de\u011feri b\u00fcy\u00fcd\u00fck\u00e7e do\u011frusal arama i\u00e7in gereken ad\u0131m say\u0131s\u0131 da ayn\u0131 oranda artarken, ikili arama i\u00e7in gereken ad\u0131m say\u0131s\u0131 \u00e7ok daha yava\u015f bir \u015fekilde artmaktad\u0131r. Milyar elemanl\u0131k bir listede bile ikili arama sadece yakla\u015f\u0131k 30 ad\u0131mda sonuca ula\u015fabilirken, do\u011frusal arama milyarlarca ad\u0131m gerektirecektir. Bu durum, ikili araman\u0131n devasa veri k\u00fcmelerinde bile neredeyse anl\u0131k sonu\u00e7lar verebilmesinin temel nedenidir.<\/p>\n<h3>Uzay Karma\u015f\u0131kl\u0131\u011f\u0131 (Space Complexity)<\/h3>\n<p>Zaman karma\u015f\u0131kl\u0131\u011f\u0131n\u0131n yan\u0131 s\u0131ra, bir algoritman\u0131n ne kadar bellek kulland\u0131\u011f\u0131n\u0131 g\u00f6steren uzay karma\u015f\u0131kl\u0131\u011f\u0131 da \u00f6nemlidir. \u0130kili arama, genellikle sabit bir miktarda ek bellek kullan\u0131r. Yinelemeli (iterative) versiyonu i\u00e7in sadece birka\u00e7 de\u011fi\u015fken (<code>sol<\/code>, <code>sag<\/code>, <code>orta<\/code>) gerekti\u011finden, uzay karma\u015f\u0131kl\u0131\u011f\u0131 O(1) olarak kabul edilir. \u00d6zyinelemeli (recursive) versiyonunda ise, her \u00f6zyineleme \u00e7a\u011fr\u0131s\u0131 \u00e7a\u011fr\u0131 y\u0131\u011f\u0131n\u0131nda (call stack) yer kaplad\u0131\u011f\u0131 i\u00e7in uzay karma\u015f\u0131kl\u0131\u011f\u0131 O(log N) olabilir. Ancak pratikte, modern sistemlerde bu y\u0131\u011f\u0131n alan\u0131 genellikle bir sorun te\u015fkil etmez.<\/p>\n<h3>Avantajlar\u0131 ve Dezavantajlar\u0131<\/h3>\n<p><strong>Avantajlar\u0131:<\/strong><\/p>\n<ul>\n<li><strong>Y\u00fcksek H\u0131z:<\/strong> B\u00fcy\u00fck veri k\u00fcmeleri i\u00e7in en h\u0131zl\u0131 arama algoritmalar\u0131ndan biridir.<\/li>\n<li><strong>Verimlilik:<\/strong> Her ad\u0131mda arama alan\u0131n\u0131 \u00f6nemli \u00f6l\u00e7\u00fcde k\u00fc\u00e7\u00fclterek gereksiz kar\u015f\u0131la\u015ft\u0131rmalar\u0131 \u00f6nler.<\/li>\n<li><strong>Basit Uygulama:<\/strong> Temel mant\u0131\u011f\u0131 nispeten basit ve kodlamas\u0131 kolayd\u0131r.<\/li>\n<\/ul>\n<p><strong>Dezavantajlar\u0131:<\/strong><\/p>\n<ul>\n<li><strong>S\u0131ral\u0131 Veri Gereksinimi:<\/strong> En b\u00fcy\u00fck dezavantaj\u0131, verinin \u00f6nceden s\u0131ralanm\u0131\u015f olmas\u0131 zorunlulu\u011fudur. E\u011fer veri s\u0131ral\u0131 de\u011filse ve her arama \u00f6ncesi s\u0131ralama gerekiyorsa, bu s\u0131ralama maliyeti (genellikle O(N log N)) algoritman\u0131n genel performans\u0131n\u0131 d\u00fc\u015f\u00fcrebilir. Ancak birden fazla arama yap\u0131lacaksa, bu maliyet amortize edilebilir.<\/li>\n<li><strong>Dinamik Verilerde Zay\u0131fl\u0131k:<\/strong> S\u0131k s\u0131k eleman ekleme veya silme i\u015flemlerinin yap\u0131ld\u0131\u011f\u0131 veri yap\u0131lar\u0131nda, s\u0131ralamay\u0131 korumak ek maliyet getirir. Bu t\u00fcr durumlarda, dengeleyici a\u011fa\u00e7lar (balanced trees) gibi daha dinamik veri yap\u0131lar\u0131 (ancak temelde ikili arama mant\u0131\u011f\u0131n\u0131 kullanan) daha uygun olabilir.<\/li>\n<li><strong>Rastgele Eri\u015fime \u0130htiya\u00e7:<\/strong> Algoritma, herhangi bir elemana do\u011frudan indeksinden eri\u015febilmeyi gerektirir. Bu nedenle ba\u011flant\u0131l\u0131 listeler (linked lists) gibi rastgele eri\u015fimi desteklemeyen veri yap\u0131lar\u0131nda do\u011frudan uygulanamaz.<\/li>\n<\/ul>\n<p>Sonu\u00e7 olarak, ikili arama, do\u011fru ko\u015fullar alt\u0131nda (yani s\u0131ral\u0131 veri ile) inan\u0131lmaz derecede g\u00fc\u00e7l\u00fc ve performansl\u0131 bir ara\u00e7t\u0131r. Algoritman\u0131n bu logaritmik verimlili\u011fini anlamak, daha karma\u015f\u0131k sistemler tasarlarken performans darbo\u011fazlar\u0131n\u0131 tespit etme ve giderme yetene\u011finizi geli\u015ftirecektir.<\/p>\n<h2>\u0130kili Arama \u0130\u00e7in \u0130pu\u00e7lar\u0131 ve En \u0130yi Uygulamalar<\/h2>\n<p>\u0130kili arama g\u00fc\u00e7l\u00fc bir ara\u00e7 olsa da, ondan en iyi \u015fekilde faydalanmak ve olas\u0131 tuzaklardan ka\u00e7\u0131nmak i\u00e7in baz\u0131 ipu\u00e7lar\u0131n\u0131 ve en iyi uygulamalar\u0131 bilmek \u00f6nemlidir. \u0130\u015fte algoritmay\u0131 daha verimli ve hatas\u0131z kullanman\u0131z\u0131 sa\u011flayacak \u00f6neriler:<\/p>\n<h3>1. S\u0131ralaman\u0131n \u00d6nemi ve Maliyeti<\/h3>\n<p>\u0130kili araman\u0131n olmazsa olmaz\u0131, verilerin s\u0131ral\u0131 olmas\u0131d\u0131r. E\u011fer verileriniz s\u0131ral\u0131 de\u011filse, \u00f6ncelikle onlar\u0131 s\u0131ralaman\u0131z gerekir. Bu s\u0131ralama i\u015flemi genellikle O(N log N) zaman karma\u015f\u0131kl\u0131\u011f\u0131na sahiptir. Bu, tek bir arama i\u00e7in do\u011frusal aramadan daha yava\u015f olabilir. Ancak, ayn\u0131 veri k\u00fcmesi \u00fczerinde birden fazla arama yapacaksan\u0131z, s\u0131ralama maliyetini bir kez \u00fcstlenip ard\u0131ndan O(log N) ikili araman\u0131n avantajlar\u0131ndan faydalanmak \u00e7ok daha mant\u0131kl\u0131d\u0131r. \u00d6rne\u011fin, bir veritaban\u0131 indeksini bir kez olu\u015fturursunuz ve sonra binlerce sorguyu h\u0131zl\u0131ca yapars\u0131n\u0131z.<\/p>\n<h3>2. Yinelenen Elemanlar ve \u0130lk\/Son Bulma<\/h3>\n<p>E\u011fer dizinizde arad\u0131\u011f\u0131n\u0131z de\u011ferden birden fazla varsa, standart ikili arama herhangi bir e\u015fle\u015fmenin indeksini d\u00f6nd\u00fcrecektir. Ancak bazen bir de\u011ferin ilk veya son g\u00f6r\u00fcld\u00fc\u011f\u00fc indeksi bulmak isteyebilirsiniz. Bu durumda, standart ikili arama algoritmas\u0131n\u0131 biraz modifiye etmeniz gerekir:<\/p>\n<ul>\n<li><strong>\u0130lk g\u00f6r\u00fclen indeksi bulmak i\u00e7in:<\/strong> Hedef bulundu\u011funda, <code>sag = orta - 1<\/code> yaparak aramay\u0131 sol tarafta daraltmaya devam edin ve bulunan indeksi bir de\u011fi\u015fkende saklay\u0131n. En sol e\u015fle\u015fme bulundu\u011funda d\u00f6ng\u00fc biter.<\/li>\n<li><strong>Son g\u00f6r\u00fclen indeksi bulmak i\u00e7in:<\/strong> Hedef bulundu\u011funda, <code>sol = orta + 1<\/code> yaparak aramay\u0131 sa\u011f tarafta daraltmaya devam edin ve bulunan indeksi bir de\u011fi\u015fkende saklay\u0131n. En sa\u011f e\u015fle\u015fme bulundu\u011funda d\u00f6ng\u00fc biter.<\/li>\n<\/ul>\n<pre><code>\nfunction ikiliAramaIlkGoren(dizi, hedef) {\n    let sol = 0;\n    let sag = dizi.length - 1;\n    let sonuc = -1; \/\/ Bulunan ilk indeksi saklamak i\u00e7in\n\n    while (sol <= sag) {\n        let orta = Math.floor(sol + (sag - sol) \/ 2);\n        if (dizi[orta] === hedef) {\n            sonuc = orta;    \/\/ E\u015fle\u015fme bulundu, sakla\n            sag = orta - 1;  \/\/ Daha soldaki e\u015fle\u015fmeleri ara\n        } else if (dizi[orta] < hedef) {\n            sol = orta + 1;\n        } else {\n            sag = orta - 1;\n        }\n    }\n    return sonuc;\n}\n<\/pre>\n<p><\/code><\/p>\n<h3>3. K\u00f6\u015fe Durumlar (Edge Cases)<\/h3>\n<p>Algoritma yazarken her zaman k\u00f6\u015fe durumlar\u0131 g\u00f6z \u00f6n\u00fcnde bulundurun:<\/p>\n<ul>\n<li><strong>Bo\u015f Dizi:<\/strong> Dizi bo\u015fsa (<code>dizi.length === 0<\/code>), fonksiyonunuzun <code>-1<\/code> d\u00f6nd\u00fcrd\u00fc\u011f\u00fcnden emin olun.<\/li>\n<li><strong>Tek Elemanl\u0131 Dizi:<\/strong> E\u011fer dizide sadece bir eleman varsa, bu eleman\u0131n hedefle do\u011fru bir \u015fekilde kar\u015f\u0131la\u015ft\u0131r\u0131ld\u0131\u011f\u0131ndan emin olun.<\/li>\n<li><strong>Hedefin Olmamas\u0131:<\/strong> Hedefin listede bulunmad\u0131\u011f\u0131 durumlar\u0131n (<code>sol > sag<\/code> oldu\u011funda) do\u011fru \u015fekilde ele al\u0131nd\u0131\u011f\u0131ndan emin olun.<\/li>\n<li><strong>Hedefin S\u0131n\u0131r De\u011ferler Olmas\u0131:<\/strong> Hedefin dizinin en k\u00fc\u00e7\u00fck veya en b\u00fcy\u00fck eleman\u0131 olmas\u0131 durumlar\u0131n\u0131 test edin.<\/li>\n<\/ul>\n<div class=\"expert-tip\">\n  Uzman \u0130pucu: Tam say\u0131 ta\u015fmas\u0131n\u0131 \u00f6nlemek i\u00e7in <code>orta = sol + (sag - sol) \/ 2<\/code> form\u00fcl\u00fcn\u00fc kullanmak, \u00f6zellikle \u00e7ok b\u00fcy\u00fck dizilerde g\u00fcvenli\u011fi art\u0131r\u0131r. Geleneksel <code>(sol + sag) \/ 2<\/code> y\u00f6ntemi, <code>sol + sag<\/code> toplam\u0131n\u0131n programlama dilinin integer s\u0131n\u0131r\u0131n\u0131 a\u015fmas\u0131na neden olabilir.\n<\/div>\n<h3>4. Yinelemeli (Iterative) ve \u00d6zyinelemeli (Recursive) Yakla\u015f\u0131mlar<\/h3>\n<p>\u0130kili arama hem yinelemeli (<code>while<\/code> d\u00f6ng\u00fcs\u00fc ile) hem de \u00f6zyinelemeli (kendini \u00e7a\u011f\u0131ran fonksiyon ile) olarak yaz\u0131labilir. Her ikisinin de avantajlar\u0131 ve dezavantajlar\u0131 vard\u0131r:<\/p>\n<ul>\n<li><strong>Yinelemeli Yakla\u015f\u0131m:<\/strong> Genellikle daha performansl\u0131d\u0131r \u00e7\u00fcnk\u00fc fonksiyon \u00e7a\u011fr\u0131 y\u0131\u011f\u0131n\u0131 olu\u015fturma ve y\u00f6netme maliyetinden ka\u00e7\u0131n\u0131r. Daha az bellek kullan\u0131r (O(1) uzay karma\u015f\u0131kl\u0131\u011f\u0131). Yukar\u0131daki \u00f6rnek kod yinelemeli yakla\u015f\u0131ma bir \u00f6rnektir.<\/li>\n<li><strong>\u00d6zyinelemeli Yakla\u015f\u0131m:<\/strong> Baz\u0131 programc\u0131lar i\u00e7in mant\u0131\u011f\u0131 daha okunabilir ve sezgisel olabilir. Ancak her \u00f6zyineleme \u00e7a\u011fr\u0131s\u0131 ek bellek (\u00e7a\u011fr\u0131 y\u0131\u011f\u0131n\u0131 i\u00e7in) kullan\u0131r (O(log N) uzay karma\u015f\u0131kl\u0131\u011f\u0131) ve \u00e7ok derin \u00f6zyinelemeler y\u0131\u011f\u0131n ta\u015fmas\u0131 (stack overflow) hatas\u0131na yol a\u00e7abilir.<\/li>\n<\/ul>\n<p>Pratikte, genellikle yinelemeli yakla\u015f\u0131m tercih edilir \u00e7\u00fcnk\u00fc daha az overhead ile daha iyi performans sunar.<\/p>\n<h3>5. Veri Yap\u0131s\u0131 Se\u00e7imi<\/h3>\n<p>\u0130kili arama, elemanlara rastgele eri\u015fimi destekleyen veri yap\u0131lar\u0131 (diziler gibi) \u00fczerinde en iyi \u015fekilde \u00e7al\u0131\u015f\u0131r. Ba\u011flant\u0131l\u0131 listeler (linked lists) gibi veri yap\u0131lar\u0131nda, orta elemana eri\u015fmek O(N) zaman alaca\u011f\u0131 i\u00e7in ikili araman\u0131n O(log N) avantaj\u0131 kaybolur. Bu nedenle, ikili arama yapmay\u0131 planlad\u0131\u011f\u0131n\u0131zda, verilerinizi uygun bir veri yap\u0131s\u0131nda (\u00f6rne\u011fin, <code>Array<\/code>, <code>Vector<\/code>) tuttu\u011funuzdan emin olun.<\/p>\n<p>Bu ipu\u00e7lar\u0131n\u0131 ve en iyi uygulamalar\u0131 g\u00f6z \u00f6n\u00fcnde bulundurarak, ikili arama algoritmas\u0131n\u0131 projelerinizde daha etkili ve g\u00fcvenilir bir \u015fekilde kullanabilirsiniz. Unutmay\u0131n, iyi bir algoritma se\u00e7imi ve do\u011fru uygulamas\u0131, yaz\u0131l\u0131m\u0131n\u0131z\u0131n performans\u0131n\u0131 ve \u00f6l\u00e7eklenebilirli\u011fini do\u011frudan etkiler.<\/p>\n<h2>Mobil Uyumluluk ve Performans Notlar\u0131<\/h2>\n<p>G\u00fcn\u00fcm\u00fczde web sitelerinin ve uygulamalar\u0131n\u0131n b\u00fcy\u00fck bir \u00e7o\u011funlu\u011fu mobil cihazlar \u00fczerinden eri\u015filmektedir. Bu nedenle, geli\u015ftirdi\u011fimiz her t\u00fcrl\u00fc i\u00e7eri\u011fin ve aray\u00fcz\u00fcn mobil uyumlu olmas\u0131 elzemdir. Teknik makaleler de dahil olmak \u00fczere, HTML i\u00e7eri\u011finin mobil cihazlarda d\u00fczg\u00fcn bir \u015fekilde g\u00f6r\u00fcnt\u00fclenmesi ve performans sorunlar\u0131 yaratmamas\u0131 gerekmektedir. \u0130kili arama algoritmas\u0131 direkt olarak kullan\u0131c\u0131 aray\u00fcz\u00fc ile ilgili olmasa da, bir web sayfas\u0131n\u0131n genel performans\u0131 ve i\u00e7eri\u011fin sunumu, mobil kullan\u0131c\u0131 deneyimini do\u011frudan etkiler.<\/p>\n<h3>HTML Yap\u0131s\u0131 ve Okunabilirlik<\/h3>\n<p>Bu makalede kulland\u0131\u011f\u0131m\u0131z gibi, semantik HTML etiketleri (<code><\/p>\n<h2><\/code>, <code><\/p>\n<h3><\/code>, <code><\/p>\n<p><\/code>, <code><\/p>\n<ul><\/code>, <code><\/p>\n<ol><\/code>, <code><\/p>\n<table><\/code>, <code><\/p>\n<pre><code><\/code>) kullanmak, i\u00e7eri\u011fin hem taray\u0131c\u0131lar hem de arama motorlar\u0131 taraf\u0131ndan daha iyi anla\u015f\u0131lmas\u0131n\u0131 sa\u011flar. Mobil cihazlarda, bu yap\u0131sal etiketler sayesinde taray\u0131c\u0131, i\u00e7eri\u011fi ekran geni\u015fli\u011fine g\u00f6re daha kolay bir \u015fekilde d\u00fczenleyebilir.<\/p>\n<ul>\n    <li><strong>Metin Boyutu:<\/strong> Mobil cihazlarda metinlerin okunabilir olmas\u0131 i\u00e7in yeterince b\u00fcy\u00fck punto (\u00f6rne\u011fin, <code>font-size: 1rem;<\/code> veya <code>16px;<\/code> minimum) kullan\u0131lmas\u0131 \u00f6nemlidir.<\/li>\n    <li><strong>Sat\u0131r Y\u00fcksekli\u011fi ve Paragraf Aral\u0131\u011f\u0131:<\/strong> \u0130yi bir sat\u0131r y\u00fcksekli\u011fi (<code>line-height: 1.6;<\/code> gibi) ve paragraflar aras\u0131 bo\u015fluklar (<code>margin-bottom<\/code>) metinlerin kolay okunmas\u0131n\u0131 sa\u011flar.<\/li>\n    <li><strong>Kod Bloklar\u0131:<\/strong> Kod bloklar\u0131 (<code><pre><code><\/code>) mobil cihazlarda ta\u015fabilir. Bu durumda, yatay kayd\u0131rma \u00e7ubuklar\u0131 (<code>overflow-x: auto;<\/code>) eklemek veya kodu daha k\u00fc\u00e7\u00fck par\u00e7alara b\u00f6lmek iyi bir yakla\u015f\u0131md\u0131r.<\/li>\n<\/ul>\n\n<h3>Mobil Uyumlu Tasar\u0131m \u0130\u00e7in CSS Media Queries<\/h3>\n<p>Duyarl\u0131 (responsive) tasar\u0131m, i\u00e7eri\u011finizin farkl\u0131 ekran boyutlar\u0131na ve \u00e7\u00f6z\u00fcn\u00fcrl\u00fcklerine otomatik olarak adapte olmas\u0131n\u0131 sa\u011flar. Bu, CSS media query'leri kullan\u0131larak ba\u015far\u0131l\u0131r. \u0130\u015fte basit bir \u00f6rnek:<\/p>\n<pre><code>\n\/* Genel stiller - T\u00fcm cihazlar i\u00e7in *\/\nbody {\n    font-family: Arial, sans-serif;\n    margin: 0 auto;\n    max-width: 900px;\n    padding: 15px;\n}\n\nh2 {\n    color: #2c3e50;\n    font-size: 1.8em;\n}\n\npre {\n    background-color: #f4f4f4;\n    padding: 10px;\n    border-radius: 5px;\n    overflow-x: auto; \/* K\u00fc\u00e7\u00fck ekranlarda yatay kayd\u0131rma \u00e7ubu\u011fu *\/\n}\n\n\/* K\u00fc\u00e7\u00fck ekranlar i\u00e7in \u00f6zel stiller (\u00f6rne\u011fin, 768px'den k\u00fc\u00e7\u00fck cihazlar) *\/\n@media (max-width: 768px) {\n    body {\n        padding: 10px;\n    }\n\n    h2 {\n        font-size: 1.5em;\n    }\n\n    \/* Tablolar\u0131n k\u00fc\u00e7\u00fck ekranlarda daha iyi g\u00f6r\u00fcnmesini sa\u011flama *\/\n    table, thead, tbody, th, td, tr {\n        display: block; \/* Her sat\u0131r\u0131 ve h\u00fccreyi blok eleman\u0131 yap *\/\n    }\n\n    thead tr {\n        position: absolute;\n        top: -9999px; \/* Ba\u015fl\u0131klar\u0131 gizle *\/\n        left: -9999px;\n    }\n\n    tr {\n        border: 1px solid #ccc;\n        margin-bottom: 5px;\n    }\n\n    td {\n        border: none;\n        border-bottom: 1px solid #eee;\n        position: relative;\n        padding-left: 50%;\n        text-align: right;\n    }\n\n    td::before {\n        content: attr(data-label); \/* Her h\u00fccreye ba\u015fl\u0131k ekle *\/\n        position: absolute;\n        left: 6px;\n        width: 45%;\n        padding-right: 10px;\n        white-space: nowrap;\n        text-align: left;\n        font-weight: bold;\n    }\n}\n<\/pre>\n<p><\/code><\/p>\n<p>Yukar\u0131daki CSS \u00f6rne\u011fi, k\u00fc\u00e7\u00fck ekranlarda metin boyutlar\u0131n\u0131 ayarlaman\u0131n ve \u00f6zellikle tablolar\u0131n nas\u0131l daha okunabilir hale getirilebilece\u011finin bir \u00f6rne\u011fini sunar. <code>td::before<\/code> pseudoelement'i ile tablo h\u00fccrelerine dinamik ba\u015fl\u0131klar eklemek, k\u00fc\u00e7\u00fck ekranlarda verinin anla\u015f\u0131labilirli\u011fini art\u0131r\u0131r.<\/p>\n<h3>Performans Notlar\u0131<\/h3>\n<p>Mobil cihazlar genellikle daha az i\u015flem g\u00fcc\u00fcne ve daha k\u0131s\u0131tl\u0131 a\u011f ba\u011flant\u0131s\u0131na sahiptir. Bu nedenle, web sayfalar\u0131n\u0131z\u0131n ve uygulamalar\u0131n\u0131z\u0131n performans\u0131n\u0131 optimize etmek \u00e7ok \u00f6nemlidir:<\/p>\n<ul>\n<li><strong>JavaScript Optimizasyonu:<\/strong> \u0130kili arama gibi algoritmalar genellikle \u00e7ok h\u0131zl\u0131d\u0131r, ancak sayfa y\u00fcklemesinde karma\u015f\u0131k ve uzun s\u00fcreli JavaScript y\u00fcr\u00fctmelerinden ka\u00e7\u0131nmak \u00f6nemlidir. Kritik olmayan JavaScript kodlar\u0131n\u0131 \"defer\" veya \"async\" nitelikleriyle y\u00fckleyerek sayfa olu\u015fturmay\u0131 (rendering) engellememelisiniz.<\/li>\n<li><strong>Resim Optimizasyonu:<\/strong> Y\u00fcksek \u00e7\u00f6z\u00fcn\u00fcrl\u00fckl\u00fc ve optimize edilmemi\u015f resimler mobil cihazlarda sayfa y\u00fckleme s\u00fcresini ciddi \u015fekilde art\u0131r\u0131r. Resimleri s\u0131k\u0131\u015ft\u0131rmak, uygun formatlar\u0131 (WebP gibi) kullanmak ve duyarl\u0131 resimler i\u00e7in <code><picture><\/code> veya <code>srcset<\/code> \u00f6zelliklerini kullanmak \u00f6nemlidir.<\/li>\n<li><strong>CSS ve HTML S\u0131k\u0131\u015ft\u0131rmas\u0131:<\/strong> Sunucu taraf\u0131nda HTML, CSS ve JavaScript dosyalar\u0131n\u0131 s\u0131k\u0131\u015ft\u0131rarak (Gzip gibi) a\u011fdan aktar\u0131lan veri miktar\u0131n\u0131 azaltmak, mobil cihazlarda y\u00fckleme s\u00fcrelerini \u00f6nemli \u00f6l\u00e7\u00fcde k\u0131salt\u0131r.<\/li>\n<\/ul>\n<p>K\u0131sacas\u0131, ikili arama algoritmas\u0131n\u0131n sa\u011flad\u0131\u011f\u0131 performans avantajlar\u0131n\u0131 arka planda kullan\u0131rken, bu i\u00e7eri\u011fi sundu\u011funuz aray\u00fcz\u00fcn de mobil uyumlu ve performansl\u0131 oldu\u011fundan emin olmal\u0131s\u0131n\u0131z. Kullan\u0131c\u0131 deneyimi, hem arka plan verimlili\u011fi hem de \u00f6n y\u00fcz sunumunun birle\u015fimidir.<\/p>\n<h2>Sonu\u00e7: \u0130kili Araman\u0131n G\u00fcc\u00fcn\u00fc Ke\u015ffetmek<\/h2>\n<p>Bu makalede, arama algoritmalar\u0131n\u0131n ilk ve belki de en temel ama bir o kadar da g\u00fc\u00e7l\u00fc temsilcilerinden biri olan \u0130kili Arama (Binary Search) algoritmas\u0131n\u0131 derinlemesine inceledik. \"Arama alan\u0131n\u0131 kesme sanat\u0131\" olarak tan\u0131mlad\u0131\u011f\u0131m\u0131z bu y\u00f6ntem, s\u0131ral\u0131 veri k\u00fcmelerinde inan\u0131lmaz bir h\u0131z ve verimlilik sunarak, Do\u011frusal Arama gibi daha basit y\u00f6ntemlerin performans darbo\u011fazlar\u0131n\u0131 ortadan kald\u0131r\u0131r. Logaritmik zaman karma\u015f\u0131kl\u0131\u011f\u0131 O(log N) sayesinde, milyarlarca elemanl\u0131k devasa veri setlerinde bile saniyeler i\u00e7inde do\u011fru sonuca ula\u015fabiliriz. Veritaban\u0131 indekslerinden e-ticaret sitelerinin \u00fcr\u00fcn aramalar\u0131na, hatta oyun geli\u015ftirme s\u00fcre\u00e7lerine kadar pek \u00e7ok ger\u00e7ek d\u00fcnya senaryosunda ikili araman\u0131n kritik bir rol oynad\u0131\u011f\u0131n\u0131 g\u00f6rd\u00fck.<\/p>\n<p>Algoritman\u0131n \u00e7al\u0131\u015fma prensibini ad\u0131m ad\u0131m ele alarak, nas\u0131l her ad\u0131mda arama aral\u0131\u011f\u0131n\u0131n yar\u0131ya indi\u011fini ve b\u00f6ylece aranan \u00f6\u011fenin konumuna nas\u0131l h\u0131zla yakla\u015f\u0131ld\u0131\u011f\u0131n\u0131 somut bir \u00f6rnekle peki\u015ftirdik. Ayr\u0131ca, ikili araman\u0131n avantajlar\u0131n\u0131 ve dezavantajlar\u0131n\u0131 tart\u0131\u015ft\u0131k; \u00f6zellikle s\u0131ral\u0131 veri gereksiniminin \u00f6nemini ve bunun algoritman\u0131n uygulama \u015feklini nas\u0131l etkiledi\u011fini vurgulad\u0131k. Son olarak, kod yazarken kar\u015f\u0131la\u015fabilece\u011finiz k\u00f6\u015fe durumlar, yinelenen elemanlarla ba\u015fa \u00e7\u0131kma ve mobil uyumluluk gibi pratik ipu\u00e7lar\u0131n\u0131 payla\u015ft\u0131k.<\/p>\n<p>\u0130kili arama, basit g\u00f6r\u00fcnen ancak m\u00fchendislik d\u00fcnyas\u0131nda devrim yaratan algoritmik d\u00fc\u015f\u00fcncenin m\u00fckemmel bir \u00f6rne\u011fidir. Bu algoritmay\u0131 anlamak ve etkili bir \u015fekilde uygulamak, sadece daha iyi kod yazman\u0131za yard\u0131mc\u0131 olmakla kalmayacak, ayn\u0131 zamanda veriyle \u00e7al\u0131\u015f\u0131rken kar\u015f\u0131la\u015ft\u0131\u011f\u0131n\u0131z performans sorunlar\u0131na kar\u015f\u0131 daha bilin\u00e7li \u00e7\u00f6z\u00fcmler \u00fcretmenizi sa\u011flayacakt\u0131r. Arama algoritmalar\u0131 serimizin bu ilk b\u00f6l\u00fcm\u00fcnde ikili araman\u0131n temelini att\u0131k. Gelecek b\u00f6l\u00fcmlerde, bu alandaki di\u011fer heyecan verici algoritmalar\u0131 ve veri yap\u0131lar\u0131n\u0131 ke\u015ffetmeye devam edece\u011fiz.<\/p>\n<h3>S\u0131k\u00e7a Sorulan Sorular (SSS)<\/h3>\n<p><strong>1. \u0130kili arama ile do\u011frusal arama aras\u0131ndaki temel fark nedir?<\/strong><\/p>\n<p>Temel fark, \u00e7al\u0131\u015fma prensipleridir. Do\u011frusal arama, listedeki her eleman\u0131 ba\u015ftan sona tek tek kontrol eder (O(N) zaman karma\u015f\u0131kl\u0131\u011f\u0131). \u0130kili arama ise, s\u0131ral\u0131 bir listede her ad\u0131mda arama alan\u0131n\u0131 yar\u0131ya indirerek hedefe ula\u015f\u0131r (O(log N) zaman karma\u015f\u0131kl\u0131\u011f\u0131). Bu sayede ikili arama, b\u00fcy\u00fck veri k\u00fcmelerinde \u00e7ok daha h\u0131zl\u0131d\u0131r.<\/p>\n<p><strong>2. \u0130kili arama kullanmak i\u00e7in veriler neden s\u0131ral\u0131 olmak zorundad\u0131r?<\/strong><\/p>\n<p>\u0130kili arama, ortadaki eleman\u0131 kontrol ederek arama alan\u0131n\u0131n hangi yar\u0131s\u0131na odaklanaca\u011f\u0131na karar verir. E\u011fer veri s\u0131ral\u0131 de\u011filse, ortadaki eleman\u0131n hedef de\u011ferden k\u00fc\u00e7\u00fck veya b\u00fcy\u00fck olmas\u0131, aranan \u00f6\u011fenin hangi yar\u0131da olaca\u011f\u0131 hakk\u0131nda g\u00fcvenilir bilgi vermez. Bu da algoritman\u0131n yanl\u0131\u015f sonu\u00e7lar \u00fcretmesine veya hi\u00e7 sonu\u00e7 bulamamas\u0131na neden olur.<\/p>\n<p><strong>3. \u0130kili arama sadece say\u0131lar \u00fczerinde mi \u00e7al\u0131\u015f\u0131r?<\/strong><\/p>\n<p>Hay\u0131r, ikili arama sadece say\u0131lar \u00fczerinde de\u011fil, kar\u015f\u0131la\u015ft\u0131r\u0131labilir herhangi bir veri tipi \u00fczerinde \u00e7al\u0131\u015f\u0131r. \u00d6rne\u011fin, alfabetik olarak s\u0131ralanm\u0131\u015f dizeler (stringler), tarihler veya \u00f6zel nesneler (kar\u015f\u0131la\u015ft\u0131rma mant\u0131\u011f\u0131 tan\u0131mlanm\u0131\u015fsa) \u00fczerinde de uygulanabilir. \u00d6nemli olan, elemanlar\u0131n tutarl\u0131 bir \u015fekilde \"k\u00fc\u00e7\u00fck m\u00fc, e\u015fit mi, b\u00fcy\u00fck m\u00fc\" diye kar\u015f\u0131la\u015ft\u0131r\u0131labilir olmas\u0131d\u0131r.<\/p>\n<p><strong>4. Bo\u015f bir dizide ikili arama ne d\u00f6nd\u00fcrmelidir?<\/strong><\/p>\n<p>Bo\u015f bir dizide aranan herhangi bir \u00f6\u011fe bulunamayaca\u011f\u0131ndan, ikili arama fonksiyonu genellikle <code>-1<\/code> gibi bir \"bulunamad\u0131\" de\u011feri d\u00f6nd\u00fcrmelidir. Bu, fonksiyonun hedeflenen \u00f6\u011feyi liste i\u00e7inde bulamad\u0131\u011f\u0131n\u0131 a\u00e7\u0131k\u00e7a belirtir.<\/p>\n<p><strong>5. \u0130kili arama her zaman en iyi arama algoritmas\u0131 m\u0131d\u0131r?<\/strong><\/p>\n<p>Hay\u0131r, her zaman de\u011fil. \u0130kili araman\u0131n en b\u00fcy\u00fck g\u00fcc\u00fc s\u0131ral\u0131 veride yatarken, e\u011fer verileriniz s\u00fcrekli de\u011fi\u015fiyor ve s\u0131ralamay\u0131 korumak \u00e7ok maliyetliyse, veya rastgele eri\u015fimi desteklemeyen veri yap\u0131lar\u0131nda \u00e7al\u0131\u015f\u0131yorsan\u0131z, farkl\u0131 algoritmalar (\u00f6rne\u011fin hash tablolar\u0131 i\u00e7in O(1) ortalama karma\u015f\u0131kl\u0131k sunan) daha uygun olabilir. Ancak, s\u0131ral\u0131 ve statik veya nadiren de\u011fi\u015fen b\u00fcy\u00fck veri k\u00fcmeleri i\u00e7in ikili arama tart\u0131\u015fmas\u0131z en verimli genel ama\u00e7l\u0131 arama algoritmalar\u0131ndan biridir.<\/p>\n<p><\/body><\/p>\n","protected":false},"excerpt":{"rendered":"G\u00fcn\u00fcm\u00fcz dijital d\u00fcnyas\u0131nda, elimizin alt\u0131nda devasa veri y\u0131\u011f\u0131nlar\u0131 bulunuyor. Bir e-ticaret sitesinde arad\u0131\u011f\u0131n\u0131z \u00fcr\u00fcn\u00fc bulmaktan, devasa bir veritaban\u0131nda&hellip;","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"csco_page_header_type":"","csco_page_load_nextpost":"","csco_page_subscribe_form":"","csco_page_contact_form":"","footnotes":""},"categories":[1],"tags":[],"class_list":{"0":"post-34082","1":"post","2":"type-post","3":"status-publish","4":"format-standard","6":"category-genel","7":"cs-entry","8":"cs-video-wrap"},"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v20.5 (Yoast SEO v25.3.1) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Arama Algoritmalar\u0131 B\u00f6l\u00fcm 1: \u0130kili Arama ve Arama Alan\u0131n\u0131 Kesme Sanat\u0131<\/title>\n<meta name=\"description\" content=\"G\u00fcn\u00fcm\u00fcz dijital d\u00fcnyas\u0131nda, elimizin alt\u0131nda devasa veri y\u0131\u011f\u0131nlar\u0131 bulunuyor. Bir e-ticaret sitesinde arad\u0131\u011f\u0131n\u0131z \u00fcr\u00fcn\u00fc bulmaktan, devasa bir veritaban\u0131nda belirli bir kayda ula\u015fmaya kadar pek \u00e7ok senaryoda, veriler i\u00e7inde h\u0131zl\u0131ca gezinme yetene\u011fi kritik \u00f6nem ta\u015f\u0131r. Peki, milyarlarca veri noktas\u0131 aras\u0131nda i\u011fne aramak gibi hissettirmeden arad\u0131\u011f\u0131m\u0131z\u0131 an\u0131nda nas\u0131l bulabiliriz? \u0130\u015fte bu sorunun cevab\u0131, g\u00fc\u00e7l\u00fc arama algoritmalar\u0131nda, \u00f6zellikle de konumuz olan \u0130kili Arama (Binary Search) algoritmas\u0131nda gizli. Bu makalede, ikili araman\u0131n temel prensiplerini, nas\u0131l \u00e7al\u0131\u015ft\u0131\u011f\u0131n\u0131, ger\u00e7ek d\u00fcnyadaki uygulamalar\u0131n\u0131 ve bu &quot;arama alan\u0131n\u0131 kesme sanat\u0131&quot;n\u0131n ard\u0131ndaki performans\u0131 ad\u0131m ad\u0131m inceleyece\u011fiz. Haydi, verimli araman\u0131n kap\u0131lar\u0131n\u0131 aralayal\u0131m!\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/fatihsoysal.com\/blog\/arama-algoritmalari-bolum-1-ikili-arama-ve-arama-alanini-kesme-sanati\/\" \/>\n<meta property=\"og:locale\" content=\"tr_TR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Arama Algoritmalar\u0131 B\u00f6l\u00fcm 1: \u0130kili Arama ve Arama Alan\u0131n\u0131 Kesme Sanat\u0131\" \/>\n<meta property=\"og:description\" content=\"G\u00fcn\u00fcm\u00fcz dijital d\u00fcnyas\u0131nda, elimizin alt\u0131nda devasa veri y\u0131\u011f\u0131nlar\u0131 bulunuyor. Bir e-ticaret sitesinde arad\u0131\u011f\u0131n\u0131z \u00fcr\u00fcn\u00fc bulmaktan, devasa bir veritaban\u0131nda belirli bir kayda ula\u015fmaya kadar pek \u00e7ok senaryoda, veriler i\u00e7inde h\u0131zl\u0131ca gezinme yetene\u011fi kritik \u00f6nem ta\u015f\u0131r. Peki, milyarlarca veri noktas\u0131 aras\u0131nda i\u011fne aramak gibi hissettirmeden arad\u0131\u011f\u0131m\u0131z\u0131 an\u0131nda nas\u0131l bulabiliriz? \u0130\u015fte bu sorunun cevab\u0131, g\u00fc\u00e7l\u00fc arama algoritmalar\u0131nda, \u00f6zellikle de konumuz olan \u0130kili Arama (Binary Search) algoritmas\u0131nda gizli. Bu makalede, ikili araman\u0131n temel prensiplerini, nas\u0131l \u00e7al\u0131\u015ft\u0131\u011f\u0131n\u0131, ger\u00e7ek d\u00fcnyadaki uygulamalar\u0131n\u0131 ve bu &quot;arama alan\u0131n\u0131 kesme sanat\u0131&quot;n\u0131n ard\u0131ndaki performans\u0131 ad\u0131m ad\u0131m inceleyece\u011fiz. Haydi, verimli araman\u0131n kap\u0131lar\u0131n\u0131 aralayal\u0131m!\" \/>\n<meta property=\"og:url\" content=\"https:\/\/fatihsoysal.com\/blog\/arama-algoritmalari-bolum-1-ikili-arama-ve-arama-alanini-kesme-sanati\/\" \/>\n<meta property=\"og:site_name\" content=\"Kodlar\u0131n Gizemli D\u00fcnyas\u0131\" \/>\n<meta property=\"article:published_time\" content=\"2025-11-10T21:01:03+00:00\" \/>\n<meta name=\"author\" content=\"Fatih Soysal\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Yazan:\" \/>\n\t<meta name=\"twitter:data1\" content=\"Fatih Soysal\" \/>\n\t<meta name=\"twitter:label2\" content=\"Tahmini okuma s\u00fcresi\" \/>\n\t<meta name=\"twitter:data2\" content=\"24 dakika\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/arama-algoritmalari-bolum-1-ikili-arama-ve-arama-alanini-kesme-sanati\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/arama-algoritmalari-bolum-1-ikili-arama-ve-arama-alanini-kesme-sanati\/\"},\"author\":{\"name\":\"Fatih Soysal\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"headline\":\"Arama Algoritmalar\u0131 B\u00f6l\u00fcm 1: \u0130kili Arama ve Arama Alan\u0131n\u0131 Kesme Sanat\u0131\",\"datePublished\":\"2025-11-10T21:01:03+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/arama-algoritmalari-bolum-1-ikili-arama-ve-arama-alanini-kesme-sanati\/\"},\"wordCount\":4588,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/fatihsoysal.com\/blog\/arama-algoritmalari-bolum-1-ikili-arama-ve-arama-alanini-kesme-sanati\/#respond\"]}],\"copyrightYear\":\"2025\",\"copyrightHolder\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/arama-algoritmalari-bolum-1-ikili-arama-ve-arama-alanini-kesme-sanati\/\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/arama-algoritmalari-bolum-1-ikili-arama-ve-arama-alanini-kesme-sanati\/\",\"name\":\"Arama Algoritmalar\u0131 B\u00f6l\u00fcm 1: \u0130kili Arama ve Arama Alan\u0131n\u0131 Kesme Sanat\u0131\",\"isPartOf\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#website\"},\"datePublished\":\"2025-11-10T21:01:03+00:00\",\"description\":\"G\u00fcn\u00fcm\u00fcz dijital d\u00fcnyas\u0131nda, elimizin alt\u0131nda devasa veri y\u0131\u011f\u0131nlar\u0131 bulunuyor. Bir e-ticaret sitesinde arad\u0131\u011f\u0131n\u0131z \u00fcr\u00fcn\u00fc bulmaktan, devasa bir veritaban\u0131nda belirli bir kayda ula\u015fmaya kadar pek \u00e7ok senaryoda, veriler i\u00e7inde h\u0131zl\u0131ca gezinme yetene\u011fi kritik \u00f6nem ta\u015f\u0131r. Peki, milyarlarca veri noktas\u0131 aras\u0131nda i\u011fne aramak gibi hissettirmeden arad\u0131\u011f\u0131m\u0131z\u0131 an\u0131nda nas\u0131l bulabiliriz? \u0130\u015fte bu sorunun cevab\u0131, g\u00fc\u00e7l\u00fc arama algoritmalar\u0131nda, \u00f6zellikle de konumuz olan \u0130kili Arama (Binary Search) algoritmas\u0131nda gizli. Bu makalede, ikili araman\u0131n temel prensiplerini, nas\u0131l \u00e7al\u0131\u015ft\u0131\u011f\u0131n\u0131, ger\u00e7ek d\u00fcnyadaki uygulamalar\u0131n\u0131 ve bu \\\"arama alan\u0131n\u0131 kesme sanat\u0131\\\"n\u0131n ard\u0131ndaki performans\u0131 ad\u0131m ad\u0131m inceleyece\u011fiz. Haydi, verimli araman\u0131n kap\u0131lar\u0131n\u0131 aralayal\u0131m!\",\"breadcrumb\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/arama-algoritmalari-bolum-1-ikili-arama-ve-arama-alanini-kesme-sanati\/#breadcrumb\"},\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/fatihsoysal.com\/blog\/arama-algoritmalari-bolum-1-ikili-arama-ve-arama-alanini-kesme-sanati\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/arama-algoritmalari-bolum-1-ikili-arama-ve-arama-alanini-kesme-sanati\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Anasayfa\",\"item\":\"https:\/\/fatihsoysal.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Arama Algoritmalar\u0131 B\u00f6l\u00fcm 1: \u0130kili Arama ve Arama Alan\u0131n\u0131 Kesme Sanat\u0131\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#website\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/\",\"name\":\"Fatihsoysal.com\",\"description\":\"Blog - Yaz\u0131l\u0131m D\u00fcnyas\u0131 Tecr\u00fcbelerim\",\"publisher\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/fatihsoysal.com\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"tr\"},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\",\"name\":\"Fatih Soysal\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"tr\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png\",\"contentUrl\":\"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png\",\"width\":512,\"height\":512,\"caption\":\"Fatih Soysal\"},\"logo\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/\"},\"description\":\"Kullan\u0131m ve kodlama m\u00fckemmeliyetini odak alan uygulamalar olu\u015fturma deneyimine sahip, profesyonel olarak 15+ y\u0131l \u00fczeri deneyime sahip bir yaz\u0131l\u0131m m\u00fchendisi.\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/author\/fatihsoysal\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Arama Algoritmalar\u0131 B\u00f6l\u00fcm 1: \u0130kili Arama ve Arama Alan\u0131n\u0131 Kesme Sanat\u0131","description":"G\u00fcn\u00fcm\u00fcz dijital d\u00fcnyas\u0131nda, elimizin alt\u0131nda devasa veri y\u0131\u011f\u0131nlar\u0131 bulunuyor. Bir e-ticaret sitesinde arad\u0131\u011f\u0131n\u0131z \u00fcr\u00fcn\u00fc bulmaktan, devasa bir veritaban\u0131nda belirli bir kayda ula\u015fmaya kadar pek \u00e7ok senaryoda, veriler i\u00e7inde h\u0131zl\u0131ca gezinme yetene\u011fi kritik \u00f6nem ta\u015f\u0131r. Peki, milyarlarca veri noktas\u0131 aras\u0131nda i\u011fne aramak gibi hissettirmeden arad\u0131\u011f\u0131m\u0131z\u0131 an\u0131nda nas\u0131l bulabiliriz? \u0130\u015fte bu sorunun cevab\u0131, g\u00fc\u00e7l\u00fc arama algoritmalar\u0131nda, \u00f6zellikle de konumuz olan \u0130kili Arama (Binary Search) algoritmas\u0131nda gizli. Bu makalede, ikili araman\u0131n temel prensiplerini, nas\u0131l \u00e7al\u0131\u015ft\u0131\u011f\u0131n\u0131, ger\u00e7ek d\u00fcnyadaki uygulamalar\u0131n\u0131 ve bu \"arama alan\u0131n\u0131 kesme sanat\u0131\"n\u0131n ard\u0131ndaki performans\u0131 ad\u0131m ad\u0131m inceleyece\u011fiz. Haydi, verimli araman\u0131n kap\u0131lar\u0131n\u0131 aralayal\u0131m!","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/fatihsoysal.com\/blog\/arama-algoritmalari-bolum-1-ikili-arama-ve-arama-alanini-kesme-sanati\/","og_locale":"tr_TR","og_type":"article","og_title":"Arama Algoritmalar\u0131 B\u00f6l\u00fcm 1: \u0130kili Arama ve Arama Alan\u0131n\u0131 Kesme Sanat\u0131","og_description":"G\u00fcn\u00fcm\u00fcz dijital d\u00fcnyas\u0131nda, elimizin alt\u0131nda devasa veri y\u0131\u011f\u0131nlar\u0131 bulunuyor. Bir e-ticaret sitesinde arad\u0131\u011f\u0131n\u0131z \u00fcr\u00fcn\u00fc bulmaktan, devasa bir veritaban\u0131nda belirli bir kayda ula\u015fmaya kadar pek \u00e7ok senaryoda, veriler i\u00e7inde h\u0131zl\u0131ca gezinme yetene\u011fi kritik \u00f6nem ta\u015f\u0131r. Peki, milyarlarca veri noktas\u0131 aras\u0131nda i\u011fne aramak gibi hissettirmeden arad\u0131\u011f\u0131m\u0131z\u0131 an\u0131nda nas\u0131l bulabiliriz? \u0130\u015fte bu sorunun cevab\u0131, g\u00fc\u00e7l\u00fc arama algoritmalar\u0131nda, \u00f6zellikle de konumuz olan \u0130kili Arama (Binary Search) algoritmas\u0131nda gizli. Bu makalede, ikili araman\u0131n temel prensiplerini, nas\u0131l \u00e7al\u0131\u015ft\u0131\u011f\u0131n\u0131, ger\u00e7ek d\u00fcnyadaki uygulamalar\u0131n\u0131 ve bu \"arama alan\u0131n\u0131 kesme sanat\u0131\"n\u0131n ard\u0131ndaki performans\u0131 ad\u0131m ad\u0131m inceleyece\u011fiz. Haydi, verimli araman\u0131n kap\u0131lar\u0131n\u0131 aralayal\u0131m!","og_url":"https:\/\/fatihsoysal.com\/blog\/arama-algoritmalari-bolum-1-ikili-arama-ve-arama-alanini-kesme-sanati\/","og_site_name":"Kodlar\u0131n Gizemli D\u00fcnyas\u0131","article_published_time":"2025-11-10T21:01:03+00:00","author":"Fatih Soysal","twitter_card":"summary_large_image","twitter_misc":{"Yazan:":"Fatih Soysal","Tahmini okuma s\u00fcresi":"24 dakika"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/fatihsoysal.com\/blog\/arama-algoritmalari-bolum-1-ikili-arama-ve-arama-alanini-kesme-sanati\/#article","isPartOf":{"@id":"https:\/\/fatihsoysal.com\/blog\/arama-algoritmalari-bolum-1-ikili-arama-ve-arama-alanini-kesme-sanati\/"},"author":{"name":"Fatih Soysal","@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"headline":"Arama Algoritmalar\u0131 B\u00f6l\u00fcm 1: \u0130kili Arama ve Arama Alan\u0131n\u0131 Kesme Sanat\u0131","datePublished":"2025-11-10T21:01:03+00:00","mainEntityOfPage":{"@id":"https:\/\/fatihsoysal.com\/blog\/arama-algoritmalari-bolum-1-ikili-arama-ve-arama-alanini-kesme-sanati\/"},"wordCount":4588,"commentCount":0,"publisher":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"inLanguage":"tr","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/fatihsoysal.com\/blog\/arama-algoritmalari-bolum-1-ikili-arama-ve-arama-alanini-kesme-sanati\/#respond"]}],"copyrightYear":"2025","copyrightHolder":{"@id":"https:\/\/fatihsoysal.com\/blog\/#organization"}},{"@type":"WebPage","@id":"https:\/\/fatihsoysal.com\/blog\/arama-algoritmalari-bolum-1-ikili-arama-ve-arama-alanini-kesme-sanati\/","url":"https:\/\/fatihsoysal.com\/blog\/arama-algoritmalari-bolum-1-ikili-arama-ve-arama-alanini-kesme-sanati\/","name":"Arama Algoritmalar\u0131 B\u00f6l\u00fcm 1: \u0130kili Arama ve Arama Alan\u0131n\u0131 Kesme Sanat\u0131","isPartOf":{"@id":"https:\/\/fatihsoysal.com\/blog\/#website"},"datePublished":"2025-11-10T21:01:03+00:00","description":"G\u00fcn\u00fcm\u00fcz dijital d\u00fcnyas\u0131nda, elimizin alt\u0131nda devasa veri y\u0131\u011f\u0131nlar\u0131 bulunuyor. Bir e-ticaret sitesinde arad\u0131\u011f\u0131n\u0131z \u00fcr\u00fcn\u00fc bulmaktan, devasa bir veritaban\u0131nda belirli bir kayda ula\u015fmaya kadar pek \u00e7ok senaryoda, veriler i\u00e7inde h\u0131zl\u0131ca gezinme yetene\u011fi kritik \u00f6nem ta\u015f\u0131r. Peki, milyarlarca veri noktas\u0131 aras\u0131nda i\u011fne aramak gibi hissettirmeden arad\u0131\u011f\u0131m\u0131z\u0131 an\u0131nda nas\u0131l bulabiliriz? \u0130\u015fte bu sorunun cevab\u0131, g\u00fc\u00e7l\u00fc arama algoritmalar\u0131nda, \u00f6zellikle de konumuz olan \u0130kili Arama (Binary Search) algoritmas\u0131nda gizli. Bu makalede, ikili araman\u0131n temel prensiplerini, nas\u0131l \u00e7al\u0131\u015ft\u0131\u011f\u0131n\u0131, ger\u00e7ek d\u00fcnyadaki uygulamalar\u0131n\u0131 ve bu \"arama alan\u0131n\u0131 kesme sanat\u0131\"n\u0131n ard\u0131ndaki performans\u0131 ad\u0131m ad\u0131m inceleyece\u011fiz. Haydi, verimli araman\u0131n kap\u0131lar\u0131n\u0131 aralayal\u0131m!","breadcrumb":{"@id":"https:\/\/fatihsoysal.com\/blog\/arama-algoritmalari-bolum-1-ikili-arama-ve-arama-alanini-kesme-sanati\/#breadcrumb"},"inLanguage":"tr","potentialAction":[{"@type":"ReadAction","target":["https:\/\/fatihsoysal.com\/blog\/arama-algoritmalari-bolum-1-ikili-arama-ve-arama-alanini-kesme-sanati\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/fatihsoysal.com\/blog\/arama-algoritmalari-bolum-1-ikili-arama-ve-arama-alanini-kesme-sanati\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Anasayfa","item":"https:\/\/fatihsoysal.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Arama Algoritmalar\u0131 B\u00f6l\u00fcm 1: \u0130kili Arama ve Arama Alan\u0131n\u0131 Kesme Sanat\u0131"}]},{"@type":"WebSite","@id":"https:\/\/fatihsoysal.com\/blog\/#website","url":"https:\/\/fatihsoysal.com\/blog\/","name":"Fatihsoysal.com","description":"Blog - Yaz\u0131l\u0131m D\u00fcnyas\u0131 Tecr\u00fcbelerim","publisher":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/fatihsoysal.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"tr"},{"@type":["Person","Organization"],"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1","name":"Fatih Soysal","image":{"@type":"ImageObject","inLanguage":"tr","@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/","url":"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png","contentUrl":"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png","width":512,"height":512,"caption":"Fatih Soysal"},"logo":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/"},"description":"Kullan\u0131m ve kodlama m\u00fckemmeliyetini odak alan uygulamalar olu\u015fturma deneyimine sahip, profesyonel olarak 15+ y\u0131l \u00fczeri deneyime sahip bir yaz\u0131l\u0131m m\u00fchendisi.","url":"https:\/\/fatihsoysal.com\/blog\/author\/fatihsoysal\/"}]}},"yoast_meta":{"yoast_wpseo_title":"","yoast_wpseo_metadesc":"","yoast_wpseo_canonical":""},"amp_enabled":true,"_links":{"self":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/34082","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/comments?post=34082"}],"version-history":[{"count":0,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/34082\/revisions"}],"wp:attachment":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/media?parent=34082"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/categories?post=34082"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/tags?post=34082"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}