{"id":41277,"date":"2026-03-22T09:00:41","date_gmt":"2026-03-22T06:00:41","guid":{"rendered":"https:\/\/fatihsoysal.com\/blog\/0-1-ve-2leri-siralama-algoritmasi-dutch-national-flag-problemi-detayli-incelemesi\/"},"modified":"2026-03-22T09:00:41","modified_gmt":"2026-03-22T06:00:41","slug":"0-1-ve-2leri-siralama-algoritmasi-dutch-national-flag-problemi-detayli-incelemesi","status":"publish","type":"post","link":"https:\/\/fatihsoysal.com\/blog\/0-1-ve-2leri-siralama-algoritmasi-dutch-national-flag-problemi-detayli-incelemesi\/","title":{"rendered":"0, 1 ve 2&#8217;leri S\u0131ralama Algoritmas\u0131: Dutch National Flag Problemi Detayl\u0131 \u0130ncelemesi"},"content":{"rendered":"<h2>0, 1 ve 2&#8217;leri S\u0131ralama Algoritmas\u0131: Dutch National Flag Problemi Detayl\u0131 \u0130ncelemesi<\/h2>\n<p>S\u0131ralama algoritmalar\u0131 bilgisayar bilimlerinin temel ta\u015flar\u0131ndan biridir ve veri i\u015fleme s\u00fcre\u00e7lerinde kritik bir rol oynar. Ancak bazen kar\u015f\u0131la\u015ft\u0131\u011f\u0131m\u0131z s\u0131ralama problemleri, genel ama\u00e7l\u0131 algoritmalar\u0131n \u00f6tesinde, daha optimize edilmi\u015f ve \u00f6zel \u00e7\u00f6z\u00fcmler gerektirebilir. &#8220;0, 1 ve 2&#8217;leri S\u0131ralama&#8221; problemi de tam olarak b\u00f6yle bir senaryoyu temsil eder. Bu \u00f6zel durum, genellikle <strong>Dutch National Flag (DNF) Problemi<\/strong> olarak bilinir ve sadece \u00fc\u00e7 farkl\u0131 de\u011fere (0, 1 ve 2) sahip bir diziyi tek bir ge\u00e7i\u015fte, yerinde (in-place) ve sabit ek alan kullanarak s\u0131ralamay\u0131 hedefler. Bu makalede, bu problemin derinliklerine inecek, farkl\u0131 \u00e7\u00f6z\u00fcm yakla\u015f\u0131mlar\u0131n\u0131 inceleyecek ve \u00f6zellikle DNF algoritmas\u0131n\u0131n detayl\u0131 bir analizini sunaca\u011f\u0131z.<\/p>\n<h2>Giri\u015f: 0, 1 ve 2&#8217;leri S\u0131ralama Problemi<\/h2>\n<p>Veri setlerinin b\u00fcy\u00fckl\u00fc\u011f\u00fc ve karma\u015f\u0131kl\u0131\u011f\u0131 artt\u0131k\u00e7a, algoritmalar\u0131n verimlili\u011fi daha da \u00f6nem kazanmaktad\u0131r. S\u0131ralama i\u015flemleri, arama, veri taban\u0131 y\u00f6netimi ve grafik algoritmalar\u0131 gibi bir\u00e7ok altyap\u0131sal g\u00f6revin temelini olu\u015fturur. Ancak, bir dizideki elemanlar\u0131n yaln\u0131zca belirli, s\u0131n\u0131rl\u0131 say\u0131da farkl\u0131 de\u011ferden olu\u015ftu\u011fu \u00f6zel durumlar, bize daha h\u0131zl\u0131 ve daha az kaynak t\u00fcketen algoritmalar geli\u015ftirme f\u0131rsat\u0131 sunar.<\/p>\n<h3>Problemin Tan\u0131m\u0131<\/h3>\n<p>0, 1 ve 2&#8217;leri s\u0131ralama problemi, size i\u00e7inde yaln\u0131zca 0, 1 ve 2 say\u0131lar\u0131n\u0131n bulundu\u011fu rastgele s\u0131ralanm\u0131\u015f bir dizi (veya liste) verildi\u011finde, bu diziyi artan s\u0131rada (yani \u00f6nce t\u00fcm 0&#8217;lar, sonra t\u00fcm 1&#8217;ler ve en son t\u00fcm 2&#8217;ler gelecek \u015fekilde) s\u0131ralaman\u0131z\u0131 ister. Bu s\u0131ralama i\u015fleminin genellikle <em>yerinde (in-place)<\/em> ve m\u00fcmk\u00fcnse <em>tek ge\u00e7i\u015fte<\/em> yap\u0131lmas\u0131 beklenir. \u00d6rne\u011fin, <code>[0, 1, 2, 0, 1, 2]<\/code> dizisi <code>[0, 0, 1, 1, 2, 2]<\/code> haline gelmelidir.<\/p>\n<h3>Ger\u00e7ek D\u00fcnya Uygulamalar\u0131<\/h3>\n<p>Bu problem ilk bak\u0131\u015fta akademik bir egzersiz gibi g\u00f6r\u00fcnse de, bilgisayar bilimlerinde ve m\u00fchendislikte \u00e7e\u015fitli pratik uygulamalar\u0131 bulunmaktad\u0131r:<\/p>\n<ul>\n<li><strong>Veri S\u0131n\u0131fland\u0131rma:<\/strong> \u00dc\u00e7 farkl\u0131 kategoriye (\u00f6rne\u011fin, d\u00fc\u015f\u00fck, orta, y\u00fcksek \u00f6ncelik; veya k\u0131rm\u0131z\u0131, ye\u015fil, mavi renk kanallar\u0131) ayr\u0131lm\u0131\u015f verileri h\u0131zl\u0131ca d\u00fczenlemek.<\/li>\n<li><strong>G\u00f6r\u00fcnt\u00fc \u0130\u015fleme:<\/strong> Belirli piksel de\u011ferlerine g\u00f6re g\u00f6r\u00fcnt\u00fcleri i\u015flemek veya filtrelemek.<\/li>\n<li><strong>Bellek Y\u00f6netimi:<\/strong> Bellekteki bo\u015f, kullan\u0131lan veya ayr\u0131lm\u0131\u015f bloklar\u0131 d\u00fczenlemek.<\/li>\n<li><strong>Algoritma Tasar\u0131m\u0131:<\/strong> Quicksort gibi daha karma\u015f\u0131k s\u0131ralama algoritmalar\u0131nda pivotlama stratejilerinin bir par\u00e7as\u0131 olarak kullan\u0131labilir.<\/li>\n<\/ul>\n<h3>Neden Bu Problemi Ele Al\u0131yoruz?<\/h3>\n<p>Bu problemi ele almam\u0131z\u0131n temel nedeni, genel s\u0131ralama algoritmalar\u0131n\u0131n (\u00f6rne\u011fin Merge Sort, Quick Sort) O(N log N) zaman karma\u015f\u0131kl\u0131\u011f\u0131na sahipken, bu \u00f6zel problem i\u00e7in O(N) zaman karma\u015f\u0131kl\u0131\u011f\u0131na sahip, yani do\u011frusal zamanda \u00e7al\u0131\u015fan \u00e7\u00f6z\u00fcmlerin m\u00fcmk\u00fcn olmas\u0131d\u0131r. Bu t\u00fcr optimizasyonlar, b\u00fcy\u00fck veri setleriyle \u00e7al\u0131\u015f\u0131rken performansta dramatik iyile\u015fmeler sa\u011flayabilir.<\/p>\n<h2>Probleme Genel Bak\u0131\u015f ve Neden \u00d6nemli?<\/h2>\n<p>S\u0131ralama, veriyi anlaml\u0131 hale getiren ve \u00fczerinde daha kolay i\u015flem yapmam\u0131z\u0131 sa\u011flayan temel bir i\u015flemdir. Ancak her s\u0131ralama problemi ayn\u0131 de\u011fildir. Bazen problemin do\u011fas\u0131, bize standart \u00e7\u00f6z\u00fcmlerin \u00f6tesinde, daha ak\u0131ll\u0131ca ve verimli yakla\u015f\u0131mlar geli\u015ftirme f\u0131rsat\u0131 sunar.<\/p>\n<h3>S\u0131ralama Algoritmalar\u0131n\u0131n Temel Rol\u00fc<\/h3>\n<p>S\u0131ralama algoritmalar\u0131, arama i\u015flemlerini h\u0131zland\u0131rmaktan, veri analizini kolayla\u015ft\u0131rmaya kadar bir\u00e7ok alanda merkezi bir role sahiptir. Bilgisayar bilimleri e\u011fitiminde en \u00e7ok \u00f6\u011fretilen konulardan biri olmalar\u0131 da bu \u00f6nemin bir g\u00f6stergesidir. Ancak, genel s\u0131ralama algoritmalar\u0131, her t\u00fcrl\u00fc veri tipi ve da\u011f\u0131l\u0131m\u0131 i\u00e7in tasarlanm\u0131\u015f oldu\u011fundan, bazen belirli veri yap\u0131lar\u0131 i\u00e7in gereksiz yere karma\u015f\u0131k veya yava\u015f kalabilirler.<\/p>\n<h3>\u00d6zel Durumlar ve Optimizasyon F\u0131rsatlar\u0131<\/h3>\n<p>E\u011fer bir dizideki elemanlar\u0131n alabilece\u011fi de\u011ferler s\u0131n\u0131rl\u0131ysa (\u00f6rne\u011fin sadece 0, 1 ve 2 gibi), bu durum bize algoritmik optimizasyon i\u00e7in kap\u0131 aralar. Bu t\u00fcr \u00f6zel durumlar, kar\u015f\u0131la\u015ft\u0131rma tabanl\u0131 s\u0131ralama algoritmalar\u0131n\u0131n alt s\u0131n\u0131r\u0131 olan O(N log N) bariyerini a\u015fmam\u0131za olanak tan\u0131r ve O(N) gibi daha iyi bir zaman karma\u015f\u0131kl\u0131\u011f\u0131na ula\u015fabiliriz. Bu, \u00f6zellikle \u00e7ok b\u00fcy\u00fck veri setleriyle \u00e7al\u0131\u015f\u0131rken kritik bir performans fark\u0131 yarat\u0131r.<\/p>\n<h3>Dutch National Flag Problemi Ad\u0131 Nereden Geliyor?<\/h3>\n<p>Bu problemin &#8220;Dutch National Flag (Hollanda Ulusal Bayra\u011f\u0131)&#8221; problemi olarak adland\u0131r\u0131lmas\u0131n\u0131n nedeni, Hollanda bayra\u011f\u0131n\u0131n \u00fc\u00e7 yatay \u015feritten olu\u015fmas\u0131d\u0131r: \u00fcstte k\u0131rm\u0131z\u0131, ortada beyaz ve altta mavi. Problem, dizideki 0&#8217;lar\u0131 (mavi), 1&#8217;leri (beyaz) ve 2&#8217;leri (k\u0131rm\u0131z\u0131) bu bayra\u011f\u0131n renkleri gibi ayr\u0131 ayr\u0131 gruplara ay\u0131rmay\u0131 hedefledi\u011fi i\u00e7in bu ismi alm\u0131\u015ft\u0131r. Bu benzetme, algoritman\u0131n g\u00f6rselle\u015ftirilmesini ve anla\u015f\u0131lmas\u0131n\u0131 kolayla\u015ft\u0131r\u0131r.<\/p>\n<h2>Naif Yakla\u015f\u0131mlar ve S\u0131n\u0131rlamalar\u0131<\/h2>\n<p>Herhangi bir algoritma problemiyle kar\u015f\u0131la\u015ft\u0131\u011f\u0131m\u0131zda, genellikle ilk akl\u0131m\u0131za gelen \u00e7\u00f6z\u00fcmler &#8220;naif&#8221; veya &#8220;brute-force&#8221; yakla\u015f\u0131mlar olur. Bu yakla\u015f\u0131mlar genellikle do\u011fru sonu\u00e7 verir ancak performans a\u00e7\u0131s\u0131ndan optimal olmayabilirler. 0, 1 ve 2&#8217;leri s\u0131ralama problemi i\u00e7in de benzer naif yakla\u015f\u0131mlar mevcuttur.<\/p>\n<h3>Standart S\u0131ralama Fonksiyonlar\u0131n\u0131n Kullan\u0131m\u0131<\/h3>\n<p>En basit yakla\u015f\u0131m, programlama dillerinin sundu\u011fu yerle\u015fik s\u0131ralama fonksiyonlar\u0131n\u0131 (\u00f6rne\u011fin Python&#8217;da <code>sort()<\/code> veya <code>sorted()<\/code>, C++&#8217;ta <code>std::sort<\/code>) kullanmakt\u0131r. Bu fonksiyonlar genellikle Quick Sort, Merge Sort veya Intro Sort gibi O(N log N) zaman karma\u015f\u0131kl\u0131\u011f\u0131na sahip algoritmalar kullan\u0131r.<\/p>\n<pre><code class=\"language-python\">\narr = [0, 1, 2, 0, 1, 2, 1, 0]\narr.sort()\nprint(arr) # \u00c7\u0131kt\u0131: [0, 0, 0, 1, 1, 1, 2, 2]\n<\/pre>\n<p><\/code><\/p>\n<p>Bu y\u00f6ntem kolay uygulanabilir olsa da, problem i\u00e7in optimal de\u011fildir \u00e7\u00fcnk\u00fc O(N log N) karma\u015f\u0131kl\u0131\u011f\u0131, O(N) bir \u00e7\u00f6z\u00fcm\u00fcn m\u00fcmk\u00fcn oldu\u011fu bu \u00f6zel durum i\u00e7in gereksiz yere yava\u015ft\u0131r.<\/p>\n<h3>Sayma S\u0131ralamas\u0131 (Counting Sort) Yakla\u015f\u0131m\u0131<\/h3>\n<p>Counting Sort, belirli bir aral\u0131ktaki tamsay\u0131lar\u0131 s\u0131ralamak i\u00e7in kullan\u0131lan, kar\u015f\u0131la\u015ft\u0131rma tabanl\u0131 olmayan do\u011frusal zamanl\u0131 bir s\u0131ralama algoritmas\u0131d\u0131r. Bu problem i\u00e7in de uygulanabilir:<\/p>\n<ol>\n<li>Dizideki 0, 1 ve 2'lerin say\u0131s\u0131n\u0131 tutmak i\u00e7in bir say\u0131c\u0131 dizisi (veya de\u011fi\u015fkenler) olu\u015fturulur.<\/li>\n<li>Dizi bir kez taranarak her say\u0131n\u0131n ka\u00e7 kez ge\u00e7ti\u011fi say\u0131l\u0131r.<\/li>\n<li>Orijinal dizi, \u00f6nce t\u00fcm 0'lar, sonra t\u00fcm 1'ler ve en son t\u00fcm 2'ler yerle\u015ftirilerek yeniden olu\u015fturulur.<\/li>\n<\/ol>\n<pre><code class=\"language-python\">\ndef counting_sort_012(arr):\n    counts = [0, 0, 0] # 0, 1 ve 2'ler i\u00e7in say\u0131c\u0131lar\n    for num in arr:\n        counts[num] += 1\n\n    index = 0\n    for i in range(counts[0]):\n        arr[index] = 0\n        index += 1\n    for i in range(counts[1]):\n        arr[index] = 1\n        index += 1\n    for i in range(counts[2]):\n        arr[index] = 2\n        index += 1\n    return arr\n\narr = [0, 1, 2, 0, 1, 2, 1, 0]\ncounting_sort_012(arr)\nprint(arr) # \u00c7\u0131kt\u0131: [0, 0, 0, 1, 1, 1, 2, 2]\n<\/pre>\n<p><\/code><\/p>\n<h3>Bu Yakla\u015f\u0131mlar\u0131n Dezavantajlar\u0131<\/h3>\n<p>Standart s\u0131ralama fonksiyonlar\u0131 O(N log N) karma\u015f\u0131kl\u0131\u011fa sahipken, Counting Sort O(N) zaman karma\u015f\u0131kl\u0131\u011f\u0131na sahiptir. Ancak Counting Sort, orijinal diziyi do\u011frudan yerinde de\u011fi\u015ftirmez; genellikle ek bir diziye veya ge\u00e7ici depolama alan\u0131na ihtiya\u00e7 duyar (bu \u00f6rnekte diziyi yeniden yazarak yerinde gibi g\u00f6stersek de, mant\u0131k olarak sayma a\u015famas\u0131 ayr\u0131 bir ge\u00e7i\u015f ve yazma a\u015famas\u0131 ayr\u0131 bir ge\u00e7i\u015ftir). Dutch National Flag algoritmas\u0131 ise, O(N) zaman karma\u015f\u0131kl\u0131\u011f\u0131na sahip olmas\u0131n\u0131n yan\u0131 s\u0131ra, <strong>tamamen yerinde (in-place)<\/strong> ve <strong>tek bir ge\u00e7i\u015fte<\/strong> \u00e7al\u0131\u015farak hem zaman hem de alan a\u00e7\u0131s\u0131ndan daha optimize bir \u00e7\u00f6z\u00fcm sunar.<\/p>\n<h2>Dutch National Flag (DNF) Algoritmas\u0131: \u00dc\u00e7 \u0130\u015faret\u00e7i Y\u00f6ntemi<\/h2>\n<p>Dutch National Flag (DNF) algoritmas\u0131, 0, 1 ve 2'leri s\u0131ralama problemi i\u00e7in en verimli ve zarif \u00e7\u00f6z\u00fcmlerden biridir. Bu algoritma, diziyi tek bir ge\u00e7i\u015fte ve sabit ek alan kullanarak s\u0131ralar. Temelinde, diziyi \u00fc\u00e7 b\u00f6l\u00fcme ay\u0131ran \u00fc\u00e7 i\u015faret\u00e7i kullanma fikri yatar.<\/p>\n<h3>Algoritman\u0131n Temel Fikri<\/h3>\n<p>DNF algoritmas\u0131n\u0131n ana fikri, diziyi mant\u0131ksal olarak \u00fc\u00e7 b\u00f6lgeye ay\u0131rmakt\u0131r:<\/p>\n<ul>\n<li><strong><code>low<\/code> i\u015faret\u00e7isinin solundaki b\u00f6lge:<\/strong> Yaln\u0131zca 0'lar\u0131 i\u00e7erir.<\/li>\n<li><strong><code>high<\/code> i\u015faret\u00e7isinin sa\u011f\u0131ndaki b\u00f6lge:<\/strong> Yaln\u0131zca 2'leri i\u00e7erir.<\/li>\n<li><strong><code>low<\/code> ile <code>mid<\/code> aras\u0131ndaki b\u00f6lge:<\/strong> Yaln\u0131zca 1'leri i\u00e7erir.<\/li>\n<li><strong><code>mid<\/code> ile <code>high<\/code> aras\u0131ndaki b\u00f6lge:<\/strong> Hen\u00fcz incelenmemi\u015f elemanlar\u0131 i\u00e7erir.<\/li>\n<\/ul>\n<p>Algoritma, <code>mid<\/code> i\u015faret\u00e7isini kullanarak diziyi tarar ve kar\u015f\u0131la\u015ft\u0131\u011f\u0131 elemana g\u00f6re onu do\u011fru b\u00f6lgeye yerle\u015ftirir. Bu i\u015flem, <code>mid<\/code> i\u015faret\u00e7isi <code>high<\/code> i\u015faret\u00e7isini ge\u00e7ene kadar devam eder.<\/p>\n<h3>\u0130\u015faret\u00e7ilerin Tan\u0131mlanmas\u0131 (low, mid, high)<\/h3>\n<p>Algoritma \u00fc\u00e7 ana i\u015faret\u00e7i kullan\u0131r:<\/p>\n<ul>\n<li><strong><code>low<\/code> (d\u00fc\u015f\u00fck):<\/strong> Dizinin ba\u015flang\u0131c\u0131n\u0131 g\u00f6sterir ve 0'lar\u0131n yerle\u015ftirilece\u011fi son konumu i\u015faret eder. Ba\u015flang\u0131\u00e7ta 0'a ayarlan\u0131r.<\/li>\n<li><strong><code>mid<\/code> (orta):<\/strong> Diziyi tarayan ana i\u015faret\u00e7idir. \u015eu anki eleman\u0131 inceler. Ba\u015flang\u0131\u00e7ta 0'a ayarlan\u0131r.<\/li>\n<li><strong><code>high<\/code> (y\u00fcksek):<\/strong> Dizinin sonunu g\u00f6sterir ve 2'lerin yerle\u015ftirilece\u011fi ilk konumu i\u015faret eder. Ba\u015flang\u0131\u00e7ta dizinin son indeksine (<code>n-1<\/code>) ayarlan\u0131r.<\/li>\n<\/ul>\n<h3>\u00c7al\u0131\u015fma Prensibi ve Durumlar<\/h3>\n<p>Algoritma, <code>mid <= high<\/code> oldu\u011fu s\u00fcrece bir d\u00f6ng\u00fcde \u00e7al\u0131\u015f\u0131r. Her ad\u0131mda, <code>arr[mid]<\/code> eleman\u0131n\u0131n de\u011feri kontrol edilir ve \u00fc\u00e7 olas\u0131 durumdan biri ger\u00e7ekle\u015fir:<\/p>\n<ol>\n<li><strong><code>arr[mid] == 0<\/code>:<\/strong>\n<p>Bu eleman 0'lar b\u00f6lgesine (<code>low<\/code>'un soluna) ait olmal\u0131d\u0131r. Bu durumda, <code>arr[mid]<\/code> ile <code>arr[low]<\/code> yer de\u011fi\u015ftirilir. Hem <code>low<\/code> hem de <code>mid<\/code> i\u015faret\u00e7ileri birer art\u0131r\u0131l\u0131r \u00e7\u00fcnk\u00fc <code>low<\/code>'a yeni bir 0 gelmi\u015f ve <code>mid<\/code> de bu 0'\u0131 zaten i\u015flemi\u015ftir.<\/p>\n<\/li>\n<li><strong><code>arr[mid] == 1<\/code>:<\/strong>\n<p>Bu eleman zaten do\u011fru b\u00f6lgededir (<code>low<\/code> ile <code>mid<\/code> aras\u0131nda). Bu durumda, sadece <code>mid<\/code> i\u015faret\u00e7isi bir art\u0131r\u0131l\u0131r ve bir sonraki elemana ge\u00e7ilir.<\/p>\n<\/li>\n<li><strong><code>arr[mid] == 2<\/code>:<\/strong>\n<p>Bu eleman 2'ler b\u00f6lgesine (<code>high<\/code>'\u0131n sa\u011f\u0131na) ait olmal\u0131d\u0131r. Bu durumda, <code>arr[mid]<\/code> ile <code>arr[high]<\/code> yer de\u011fi\u015ftirilir. <code>high<\/code> i\u015faret\u00e7isi bir azalt\u0131l\u0131r \u00e7\u00fcnk\u00fc <code>high<\/code>'a yeni bir 2 gelmi\u015f ve bu b\u00f6lgeyi daraltm\u0131\u015ft\u0131r. <code>mid<\/code> i\u015faret\u00e7isi ise art\u0131r\u0131lmaz \u00e7\u00fcnk\u00fc <code>arr[mid]<\/code>'e yeni gelen eleman (eski <code>arr[high]<\/code>) hen\u00fcz incelenmemi\u015ftir ve 0, 1 veya 2 olabilir, bu y\u00fczden bir sonraki d\u00f6ng\u00fcde tekrar kontrol edilmesi gerekir.<\/p>\n<\/li>\n<\/ol>\n<h2>DNF Algoritmas\u0131n\u0131n Ad\u0131m Ad\u0131m Uygulamas\u0131 ve Kod \u00d6rne\u011fi<\/h2>\n<p>Dutch National Flag algoritmas\u0131n\u0131n nas\u0131l \u00e7al\u0131\u015ft\u0131\u011f\u0131n\u0131 daha iyi anlamak i\u00e7in ad\u0131m ad\u0131m bir uygulama ve Python ile bir kod \u00f6rne\u011fi sunal\u0131m.<\/p>\n<h3>Algoritma Ad\u0131mlar\u0131<\/h3>\n<ol>\n<li>\u00dc\u00e7 i\u015faret\u00e7i tan\u0131mla: <code>low = 0<\/code>, <code>mid = 0<\/code>, <code>high = len(arr) - 1<\/code>.<\/li>\n<li><code>mid <= high<\/code> oldu\u011fu s\u00fcrece bir d\u00f6ng\u00fc ba\u015flat.<\/li>\n<li>D\u00f6ng\u00fc i\u00e7inde, <code>arr[mid]<\/code> de\u011ferini kontrol et:\n<ul>\n<li>E\u011fer <code>arr[mid] == 0<\/code> ise:\n<ol>\n<li><code>arr[low]<\/code> ile <code>arr[mid]<\/code>'i yer de\u011fi\u015ftir.<\/li>\n<li><code>low<\/code>'u bir art\u0131r.<\/li>\n<li><code>mid<\/code>'i bir art\u0131r.<\/li>\n<\/ol>\n<\/li>\n<li>E\u011fer <code>arr[mid] == 1<\/code> ise:\n<ol>\n<li>Sadece <code>mid<\/code>'i bir art\u0131r.<\/li>\n<\/ol>\n<\/li>\n<li>E\u011fer <code>arr[mid] == 2<\/code> ise:\n<ol>\n<li><code>arr[mid]<\/code> ile <code>arr[high]<\/code>'\u0131 yer de\u011fi\u015ftir.<\/li>\n<li><code>high<\/code>'\u0131 bir azalt.<\/li>\n<li><code>mid<\/code>'i art\u0131rma (\u00e7\u00fcnk\u00fc yeni gelen eleman tekrar kontrol edilmeli).<\/li>\n<\/ol>\n<\/li>\n<\/ul>\n<\/li>\n<li>D\u00f6ng\u00fc bitti\u011finde, dizi s\u0131ralanm\u0131\u015f olacakt\u0131r.<\/li>\n<\/ol>\n<h3>Python ile Kod \u00d6rne\u011fi<\/h3>\n<pre><code class=\"language-python\">\ndef sort_012(arr):\n    low = 0\n    mid = 0\n    high = len(arr) - 1\n\n    while mid <= high:\n        if arr[mid] == 0:\n            # E\u011fer eleman 0 ise, low ile yer de\u011fi\u015ftir ve ikisini de ilerlet\n            arr[low], arr[mid] = arr[mid], arr[low]\n            low += 1\n            mid += 1\n        elif arr[mid] == 1:\n            # E\u011fer eleman 1 ise, zaten do\u011fru yerde, sadece mid'i ilerlet\n            mid += 1\n        else: # arr[mid] == 2\n            # E\u011fer eleman 2 ise, high ile yer de\u011fi\u015ftir ve high'\u0131 gerilet\n            # mid'i ilerletme, \u00e7\u00fcnk\u00fc high'dan gelen eleman\u0131 tekrar kontrol etmeliyiz\n            arr[mid], arr[high] = arr[high], arr[mid]\n            high -= 1\n    return arr\n\n# Test \u00f6rnekleri\narr1 = [0, 1, 2, 0, 1, 2, 1, 0]\nprint(f\"Orijinal dizi: {arr1}\")\nsort_012(arr1)\nprint(f\"S\u0131ralanm\u0131\u015f dizi: {arr1}\") # \u00c7\u0131kt\u0131: [0, 0, 0, 1, 1, 1, 2, 2]\n\narr2 = [2, 2, 1, 1, 0, 0]\nprint(f\"Orijinal dizi: {arr2}\")\nsort_012(arr2)\nprint(f\"S\u0131ralanm\u0131\u015f dizi: {arr2}\") # \u00c7\u0131kt\u0131: [0, 0, 1, 1, 2, 2]\n\narr3 = [1, 1, 1, 0, 0, 0, 2, 2, 2]\nprint(f\"Orijinal dizi: {arr3}\")\nsort_012(arr3)\nprint(f\"S\u0131ralanm\u0131\u015f dizi: {arr3}\") # \u00c7\u0131kt\u0131: [0, 0, 0, 1, 1, 1, 2, 2, 2]\n<\/pre>\n<p><\/code><\/p>\n<h3>\u00c7al\u0131\u015fma \u00d6rne\u011fi<\/h3>\n<p>Dizinin <code>[2, 0, 1, 2, 0]<\/code> oldu\u011funu varsayal\u0131m. \u0130\u015faret\u00e7iler <code>low=0, mid=0, high=4<\/code>.<\/p>\n<table border=\"1\">\n<thead>\n<tr>\n<th>Ad\u0131m<\/th>\n<th>Dizi Durumu<\/th>\n<th>low<\/th>\n<th>mid<\/th>\n<th>high<\/th>\n<th>arr[mid]<\/th>\n<th>A\u00e7\u0131klama<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>Ba\u015flang\u0131\u00e7<\/td>\n<td><code>[2, 0, 1, 2, 0]<\/code><\/td>\n<td>0<\/td>\n<td>0<\/td>\n<td>4<\/td>\n<td>2<\/td>\n<td><code>arr[mid] == 2<\/code>. <code>arr[0]<\/code> ile <code>arr[4]<\/code> yer de\u011fi\u015ftir. <code>high<\/code> azal\u0131r.<\/td>\n<\/tr>\n<tr>\n<td>1<\/td>\n<td><code>[0, 0, 1, 2, 2]<\/code><\/td>\n<td>0<\/td>\n<td>0<\/td>\n<td>3<\/td>\n<td>0<\/td>\n<td><code>arr[mid] == 0<\/code>. <code>arr[0]<\/code> ile <code>arr[0]<\/code> yer de\u011fi\u015ftir. <code>low<\/code> ve <code>mid<\/code> artar.<\/td>\n<\/tr>\n<tr>\n<td>2<\/td>\n<td><code>[0, 0, 1, 2, 2]<\/code><\/td>\n<td>1<\/td>\n<td>1<\/td>\n<td>3<\/td>\n<td>0<\/td>\n<td><code>arr[mid] == 0<\/code>. <code>arr[1]<\/code> ile <code>arr[1]<\/code> yer de\u011fi\u015ftir. <code>low<\/code> ve <code>mid<\/code> artar.<\/td>\n<\/tr>\n<tr>\n<td>3<\/td>\n<td><code>[0, 0, 1, 2, 2]<\/code><\/td>\n<td>2<\/td>\n<td>2<\/td>\n<td>3<\/td>\n<td>1<\/td>\n<td><code>arr[mid] == 1<\/code>. Sadece <code>mid<\/code> artar.<\/td>\n<\/tr>\n<tr>\n<td>4<\/td>\n<td><code>[0, 0, 1, 2, 2]<\/code><\/td>\n<td>2<\/td>\n<td>3<\/td>\n<td>3<\/td>\n<td>2<\/td>\n<td><code>arr[mid] == 2<\/code>. <code>arr[3]<\/code> ile <code>arr[3]<\/code> yer de\u011fi\u015ftir. <code>high<\/code> azal\u0131r.<\/td>\n<\/tr>\n<tr>\n<td>5<\/td>\n<td><code>[0, 0, 1, 2, 2]<\/code><\/td>\n<td>2<\/td>\n<td>3<\/td>\n<td>2<\/td>\n<td>-<\/td>\n<td>D\u00f6ng\u00fc sonlan\u0131r (<code>mid > high<\/code>). Dizi s\u0131raland\u0131.<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<h2>Performans Analizi: Zaman ve Alan Karma\u015f\u0131kl\u0131\u011f\u0131<\/h2>\n<p>Bir algoritman\u0131n verimlili\u011fini de\u011ferlendirmenin en \u00f6nemli yollar\u0131ndan biri, onun zaman ve alan karma\u015f\u0131kl\u0131\u011f\u0131n\u0131 analiz etmektir. Dutch National Flag algoritmas\u0131 bu a\u00e7\u0131lardan olduk\u00e7a etkileyicidir.<\/p>\n<h3>Zaman Karma\u015f\u0131kl\u0131\u011f\u0131 (Time Complexity)<\/h3>\n<p>DNF algoritmas\u0131, diziyi tek bir ge\u00e7i\u015fte i\u015fler. <code>mid<\/code> i\u015faret\u00e7isi dizinin ba\u015f\u0131ndan sonuna do\u011fru ilerler ve her eleman en fazla bir kez incelenir. Her eleman i\u00e7in yap\u0131lan i\u015flemler (kar\u015f\u0131la\u015ft\u0131rma, yer de\u011fi\u015ftirme) sabit zamanl\u0131d\u0131r (O(1)). Bu nedenle, algoritman\u0131n zaman karma\u015f\u0131kl\u0131\u011f\u0131 dizinin boyutuna (N) do\u011frusal olarak ba\u011fl\u0131d\u0131r. Yani, <strong>O(N)<\/strong>'dir. Bu, m\u00fcmk\u00fcn olan en iyi zaman karma\u015f\u0131kl\u0131\u011f\u0131d\u0131r \u00e7\u00fcnk\u00fc her eleman\u0131 en az bir kez g\u00f6rmek zorunday\u0131z.<\/p>\n<h3>Alan Karma\u015f\u0131kl\u0131\u011f\u0131 (Space Complexity)<\/h3>\n<p>Algoritma, s\u0131ralama i\u015flemini orijinal dizi \u00fczerinde do\u011frudan ger\u00e7ekle\u015ftirir ve herhangi bir ek veri yap\u0131s\u0131 (yeni bir dizi, hash tablosu vb.) kullanmaz. Sadece birka\u00e7 i\u015faret\u00e7i de\u011fi\u015fkeni (<code>low<\/code>, <code>mid<\/code>, <code>high<\/code>) i\u00e7in sabit miktarda ek belle\u011fe ihtiya\u00e7 duyar. Bu nedenle, algoritman\u0131n alan karma\u015f\u0131kl\u0131\u011f\u0131 <strong>O(1)<\/strong>'dir. Bu, algoritman\u0131n bellek kullan\u0131m\u0131 a\u00e7\u0131s\u0131ndan da olduk\u00e7a verimli oldu\u011fu anlam\u0131na gelir.<\/p>\n<h3>Di\u011fer Algoritmalarla Kar\u015f\u0131la\u015ft\u0131rma<\/h3>\n<p>A\u015fa\u011f\u0131daki tablo, 0, 1 ve 2'leri s\u0131ralama problemi i\u00e7in farkl\u0131 yakla\u015f\u0131mlar\u0131n zaman ve alan karma\u015f\u0131kl\u0131klar\u0131n\u0131 kar\u015f\u0131la\u015ft\u0131rmaktad\u0131r:<\/p>\n<table border=\"1\">\n<thead>\n<tr>\n<th>Algoritma Yakla\u015f\u0131m\u0131<\/th>\n<th>Zaman Karma\u015f\u0131kl\u0131\u011f\u0131<\/th>\n<th>Alan Karma\u015f\u0131kl\u0131\u011f\u0131<\/th>\n<th>Ek Notlar<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>Standart S\u0131ralama (\u00f6rn. Quick Sort)<\/td>\n<td>O(N log N)<\/td>\n<td>O(log N) veya O(N) (yerinde olmayanlar i\u00e7in)<\/td>\n<td>Genel ama\u00e7l\u0131, her t\u00fcrl\u00fc veri i\u00e7in uygun.<\/td>\n<\/tr>\n<tr>\n<td>Sayma S\u0131ralamas\u0131 (Counting Sort)<\/td>\n<td>O(N + K) (burada K=3) \u2192 O(N)<\/td>\n<td>O(K) \u2192 O(1)<\/td>\n<td>Yerinde de\u011fildir, ek bir say\u0131c\u0131 dizisi gerektirir.<\/td>\n<\/tr>\n<tr>\n<td>Dutch National Flag Algoritmas\u0131<\/td>\n<td>O(N)<\/td>\n<td>O(1)<\/td>\n<td>Tamamen yerinde ve tek ge\u00e7i\u015fte, bu problem i\u00e7in optimal.<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>Tablodan da g\u00f6r\u00fcld\u00fc\u011f\u00fc \u00fczere, Dutch National Flag algoritmas\u0131, 0, 1 ve 2'leri s\u0131ralama problemi i\u00e7in hem zaman hem de alan karma\u015f\u0131kl\u0131\u011f\u0131 a\u00e7\u0131s\u0131ndan en \u00fcst\u00fcn \u00e7\u00f6z\u00fcm\u00fc sunmaktad\u0131r.<\/p>\n<h2>Sonu\u00e7 ve \u0130leri Okumalar<\/h2>\n<p>0, 1 ve 2'leri s\u0131ralama problemi, bilgisayar bilimlerinde s\u0131k\u00e7a kar\u015f\u0131la\u015f\u0131lan ve optimizasyon potansiyeli y\u00fcksek olan \u00f6zel bir s\u0131ralama senaryosudur. Bu makalede, problemin tan\u0131m\u0131ndan, naif yakla\u015f\u0131mlara ve nihayetinde en verimli \u00e7\u00f6z\u00fcm olan Dutch National Flag (DNF) algoritmas\u0131na kadar geni\u015f bir perspektif sunduk.<\/p>\n<h3>Algoritman\u0131n \u00d6zeti ve \u00d6nemi<\/h3>\n<p>DNF algoritmas\u0131, \u00fc\u00e7 i\u015faret\u00e7i (<code>low<\/code>, <code>mid<\/code>, <code>high<\/code>) kullanarak diziyi tek bir ge\u00e7i\u015fte, yerinde (in-place) ve sabit ek alan (O(1)) kullanarak O(N) zaman karma\u015f\u0131kl\u0131\u011f\u0131 ile s\u0131ralama yetene\u011fi sayesinde \u00f6ne \u00e7\u0131kmaktad\u0131r. Bu, onu sadece akademik bir problem olmaktan \u00e7\u0131kar\u0131p, veri s\u0131n\u0131fland\u0131rma, g\u00f6r\u00fcnt\u00fc i\u015fleme ve di\u011fer optimizasyon gerektiren uygulamalarda pratik bir ara\u00e7 haline getirir. Algoritman\u0131n zarafeti, basitli\u011fi ve y\u00fcksek verimlili\u011fi, onu algoritmik d\u00fc\u015f\u00fcnme ve problem \u00e7\u00f6zme becerilerini geli\u015ftirmek isteyen herkes i\u00e7in de\u011ferli bir \u00f6rnek haline getirmektedir.<\/p>\n<h3>Potansiyel Geli\u015ftirmeler ve Varyasyonlar<\/h3>\n<p>DNF algoritmas\u0131n\u0131n temel prensipleri, sadece 0, 1 ve 2 say\u0131lar\u0131yla s\u0131n\u0131rl\u0131 de\u011fildir. Bu yakla\u015f\u0131m, sabit say\u0131da (\u00f6rne\u011fin k adet) farkl\u0131 de\u011fere sahip bir diziyi s\u0131ralamak i\u00e7in genelle\u015ftirilebilir. Bu durumda, k-i\u015faret\u00e7i yakla\u015f\u0131m\u0131 veya Counting Sort'un daha genel bir versiyonu d\u00fc\u015f\u00fcn\u00fclebilir. Ayr\u0131ca, Quicksort gibi algoritmalar\u0131n pivotlama a\u015famas\u0131nda, \u00fc\u00e7 yollu b\u00f6l\u00fcmleme (three-way partitioning) olarak bilinen bir teknikle benzer bir mant\u0131k kullan\u0131lmaktad\u0131r.<\/p>\n<h3>Daha Fazla Kaynak<\/h3>\n<p>Algoritmalar ve veri yap\u0131lar\u0131 hakk\u0131nda daha fazla bilgi edinmek i\u00e7in a\u015fa\u011f\u0131daki kaynaklara ba\u015fvurabilirsiniz:<\/p>\n<ul>\n<li>Cormen, T. H., Leiserson, C. E., Rivest, R. L., & Stein, C. (2009). <em>Introduction to Algorithms<\/em> (3rd ed.). MIT Press.<\/li>\n<li>GeeksforGeeks, LeetCode, HackerRank gibi online platformlardaki s\u0131ralama algoritmalar\u0131 ve ilgili problemler.<\/li>\n<\/ul>\n<p>Bu makalenin, 0, 1 ve 2'leri s\u0131ralama problemi ve Dutch National Flag algoritmas\u0131 hakk\u0131nda kapsaml\u0131 bir anlay\u0131\u015f sa\u011flaman\u0131za yard\u0131mc\u0131 oldu\u011funu umuyoruz. Algoritmalar\u0131n g\u00fcc\u00fc, do\u011fru problem i\u00e7in do\u011fru \u00e7\u00f6z\u00fcm\u00fc bulmaktan ge\u00e7er ve DNF algoritmas\u0131 bunun m\u00fckemmel bir \u00f6rne\u011fidir.<\/p>\n<h2>SSS (S\u0131k\u00e7a Sorulan Sorular)<\/h2>\n<h3>1. Dutch National Flag (DNF) problemi tam olarak nedir?<\/h3>\n<p>DNF problemi, i\u00e7inde yaln\u0131zca 0, 1 ve 2 say\u0131lar\u0131n\u0131n bulundu\u011fu bir diziyi, t\u00fcm 0'lar ba\u015fta, t\u00fcm 1'ler ortada ve t\u00fcm 2'ler sonda olacak \u015fekilde artan s\u0131rada s\u0131ralamay\u0131 ama\u00e7layan bir algoritma problemidir. Bu s\u0131ralama genellikle yerinde (in-place) ve tek bir ge\u00e7i\u015fte yap\u0131l\u0131r.<\/p>\n<h3>2. Neden \"Dutch National Flag\" olarak adland\u0131r\u0131l\u0131yor?<\/h3>\n<p>Hollanda bayra\u011f\u0131n\u0131n k\u0131rm\u0131z\u0131, beyaz ve mavi olmak \u00fczere \u00fc\u00e7 yatay \u015feritten olu\u015fmas\u0131 nedeniyle bu ismi alm\u0131\u015ft\u0131r. Algoritma da dizideki elemanlar\u0131 bu renkler gibi \u00fc\u00e7 farkl\u0131 b\u00f6lgeye ay\u0131rd\u0131\u011f\u0131 i\u00e7in benzetme yap\u0131lm\u0131\u015ft\u0131r.<\/p>\n<h3>3. DNF algoritmas\u0131n\u0131n zaman ve alan karma\u015f\u0131kl\u0131\u011f\u0131 nedir?<\/h3>\n<p>DNF algoritmas\u0131, diziyi tek bir ge\u00e7i\u015fte tarad\u0131\u011f\u0131 i\u00e7in O(N) zaman karma\u015f\u0131kl\u0131\u011f\u0131na sahiptir. Ayr\u0131ca, s\u0131ralama i\u015flemini orijinal dizi \u00fczerinde do\u011frudan ger\u00e7ekle\u015ftirdi\u011fi ve ek bir veri yap\u0131s\u0131 kullanmad\u0131\u011f\u0131 i\u00e7in O(1) alan karma\u015f\u0131kl\u0131\u011f\u0131na sahiptir.<\/p>\n<h3>4. Bu algoritma sadece 0, 1 ve 2 say\u0131lar\u0131 i\u00e7in mi ge\u00e7erlidir?<\/h3>\n<p>Algoritman\u0131n temel prensibi 0, 1 ve 2'ler i\u00e7in optimize edilmi\u015f olsa da, benzer bir \u00fc\u00e7 i\u015faret\u00e7i yakla\u015f\u0131m\u0131, belirli bir pivot de\u011feri etraf\u0131nda diziyi \u00fc\u00e7 b\u00f6l\u00fcme (pivot'tan k\u00fc\u00e7\u00fckler, pivot'a e\u015fitler, pivot'tan b\u00fcy\u00fckler) ay\u0131rmak i\u00e7in genelle\u015ftirilebilir. Bu, Quicksort gibi algoritmalar\u0131n \u00fc\u00e7 yollu b\u00f6l\u00fcmleme tekni\u011finde kullan\u0131l\u0131r.<\/p>\n<h3>5. DNF algoritmas\u0131 yerine standart bir s\u0131ralama fonksiyonu kullanmak neden<\/p>\n","protected":false},"excerpt":{"rendered":"S\u0131ralama algoritmalar\u0131 bilgisayar bilimlerinin temel ta\u015flar\u0131ndan biridir ve veri i\u015fleme s\u00fcre\u00e7lerinde kritik bir rol oynar.","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-41277","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>0, 1 ve 2&#039;leri S\u0131ralama Algoritmas\u0131: Dutch National Flag Problemi Detayl\u0131 \u0130ncelemesi - Kodlar\u0131n Gizemli D\u00fcnyas\u0131<\/title>\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\/0-1-ve-2leri-siralama-algoritmasi-dutch-national-flag-problemi-detayli-incelemesi\/\" \/>\n<meta property=\"og:locale\" content=\"tr_TR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"0, 1 ve 2&#039;leri S\u0131ralama Algoritmas\u0131: Dutch National Flag Problemi Detayl\u0131 \u0130ncelemesi\" \/>\n<meta property=\"og:description\" content=\"S\u0131ralama algoritmalar\u0131 bilgisayar bilimlerinin temel ta\u015flar\u0131ndan biridir ve veri i\u015fleme s\u00fcre\u00e7lerinde kritik bir rol oynar.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/fatihsoysal.com\/blog\/0-1-ve-2leri-siralama-algoritmasi-dutch-national-flag-problemi-detayli-incelemesi\/\" \/>\n<meta property=\"og:site_name\" content=\"Kodlar\u0131n Gizemli D\u00fcnyas\u0131\" \/>\n<meta property=\"article:published_time\" content=\"2026-03-22T06:00:41+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=\"7 dakika\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/0-1-ve-2leri-siralama-algoritmasi-dutch-national-flag-problemi-detayli-incelemesi\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/0-1-ve-2leri-siralama-algoritmasi-dutch-national-flag-problemi-detayli-incelemesi\/\"},\"author\":{\"name\":\"Fatih Soysal\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"headline\":\"0, 1 ve 2&#8217;leri S\u0131ralama Algoritmas\u0131: Dutch National Flag Problemi Detayl\u0131 \u0130ncelemesi\",\"datePublished\":\"2026-03-22T06:00:41+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/0-1-ve-2leri-siralama-algoritmasi-dutch-national-flag-problemi-detayli-incelemesi\/\"},\"wordCount\":2747,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/fatihsoysal.com\/blog\/0-1-ve-2leri-siralama-algoritmasi-dutch-national-flag-problemi-detayli-incelemesi\/#respond\"]}],\"copyrightYear\":\"2026\",\"copyrightHolder\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/0-1-ve-2leri-siralama-algoritmasi-dutch-national-flag-problemi-detayli-incelemesi\/\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/0-1-ve-2leri-siralama-algoritmasi-dutch-national-flag-problemi-detayli-incelemesi\/\",\"name\":\"0, 1 ve 2'leri S\u0131ralama Algoritmas\u0131: Dutch National Flag Problemi Detayl\u0131 \u0130ncelemesi - Kodlar\u0131n Gizemli D\u00fcnyas\u0131\",\"isPartOf\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#website\"},\"datePublished\":\"2026-03-22T06:00:41+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/0-1-ve-2leri-siralama-algoritmasi-dutch-national-flag-problemi-detayli-incelemesi\/#breadcrumb\"},\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/fatihsoysal.com\/blog\/0-1-ve-2leri-siralama-algoritmasi-dutch-national-flag-problemi-detayli-incelemesi\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/0-1-ve-2leri-siralama-algoritmasi-dutch-national-flag-problemi-detayli-incelemesi\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Anasayfa\",\"item\":\"https:\/\/fatihsoysal.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"0, 1 ve 2&#8217;leri S\u0131ralama Algoritmas\u0131: Dutch National Flag Problemi Detayl\u0131 \u0130ncelemesi\"}]},{\"@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":"0, 1 ve 2'leri S\u0131ralama Algoritmas\u0131: Dutch National Flag Problemi Detayl\u0131 \u0130ncelemesi - Kodlar\u0131n Gizemli D\u00fcnyas\u0131","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\/0-1-ve-2leri-siralama-algoritmasi-dutch-national-flag-problemi-detayli-incelemesi\/","og_locale":"tr_TR","og_type":"article","og_title":"0, 1 ve 2'leri S\u0131ralama Algoritmas\u0131: Dutch National Flag Problemi Detayl\u0131 \u0130ncelemesi","og_description":"S\u0131ralama algoritmalar\u0131 bilgisayar bilimlerinin temel ta\u015flar\u0131ndan biridir ve veri i\u015fleme s\u00fcre\u00e7lerinde kritik bir rol oynar.","og_url":"https:\/\/fatihsoysal.com\/blog\/0-1-ve-2leri-siralama-algoritmasi-dutch-national-flag-problemi-detayli-incelemesi\/","og_site_name":"Kodlar\u0131n Gizemli D\u00fcnyas\u0131","article_published_time":"2026-03-22T06:00:41+00:00","author":"Fatih Soysal","twitter_card":"summary_large_image","twitter_misc":{"Yazan:":"Fatih Soysal","Tahmini okuma s\u00fcresi":"7 dakika"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/fatihsoysal.com\/blog\/0-1-ve-2leri-siralama-algoritmasi-dutch-national-flag-problemi-detayli-incelemesi\/#article","isPartOf":{"@id":"https:\/\/fatihsoysal.com\/blog\/0-1-ve-2leri-siralama-algoritmasi-dutch-national-flag-problemi-detayli-incelemesi\/"},"author":{"name":"Fatih Soysal","@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"headline":"0, 1 ve 2&#8217;leri S\u0131ralama Algoritmas\u0131: Dutch National Flag Problemi Detayl\u0131 \u0130ncelemesi","datePublished":"2026-03-22T06:00:41+00:00","mainEntityOfPage":{"@id":"https:\/\/fatihsoysal.com\/blog\/0-1-ve-2leri-siralama-algoritmasi-dutch-national-flag-problemi-detayli-incelemesi\/"},"wordCount":2747,"commentCount":0,"publisher":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"inLanguage":"tr","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/fatihsoysal.com\/blog\/0-1-ve-2leri-siralama-algoritmasi-dutch-national-flag-problemi-detayli-incelemesi\/#respond"]}],"copyrightYear":"2026","copyrightHolder":{"@id":"https:\/\/fatihsoysal.com\/blog\/#organization"}},{"@type":"WebPage","@id":"https:\/\/fatihsoysal.com\/blog\/0-1-ve-2leri-siralama-algoritmasi-dutch-national-flag-problemi-detayli-incelemesi\/","url":"https:\/\/fatihsoysal.com\/blog\/0-1-ve-2leri-siralama-algoritmasi-dutch-national-flag-problemi-detayli-incelemesi\/","name":"0, 1 ve 2'leri S\u0131ralama Algoritmas\u0131: Dutch National Flag Problemi Detayl\u0131 \u0130ncelemesi - Kodlar\u0131n Gizemli D\u00fcnyas\u0131","isPartOf":{"@id":"https:\/\/fatihsoysal.com\/blog\/#website"},"datePublished":"2026-03-22T06:00:41+00:00","breadcrumb":{"@id":"https:\/\/fatihsoysal.com\/blog\/0-1-ve-2leri-siralama-algoritmasi-dutch-national-flag-problemi-detayli-incelemesi\/#breadcrumb"},"inLanguage":"tr","potentialAction":[{"@type":"ReadAction","target":["https:\/\/fatihsoysal.com\/blog\/0-1-ve-2leri-siralama-algoritmasi-dutch-national-flag-problemi-detayli-incelemesi\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/fatihsoysal.com\/blog\/0-1-ve-2leri-siralama-algoritmasi-dutch-national-flag-problemi-detayli-incelemesi\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Anasayfa","item":"https:\/\/fatihsoysal.com\/blog\/"},{"@type":"ListItem","position":2,"name":"0, 1 ve 2&#8217;leri S\u0131ralama Algoritmas\u0131: Dutch National Flag Problemi Detayl\u0131 \u0130ncelemesi"}]},{"@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\/41277","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=41277"}],"version-history":[{"count":0,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/41277\/revisions"}],"wp:attachment":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/media?parent=41277"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/categories?post=41277"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/tags?post=41277"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}