[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"blog-post-siralama-ve-arama-python-ile-anlasilir-algoritma-ornekleri":3},{"dataItem":4,"heading":36,"metaData":38,"schema":81},["Reactive",5],{"id":6,"title":7,"summary":8,"content":9,"seo_title":10,"seo_description":11,"seo_keywords":12,"slug":13,"createdAt":14,"updatedAt":14,"blog_categories":15,"authors":19,"image":24,"thumb":25,"image_webp":26,"thumb_webp":27,"rating":28,"heading_title":7,"heading_sub_title":17,"readingTime":29,"url":34,"comments":35,"meta_cover":24},32989,"Sıralama ve arama: Python ile anlaşılır algoritma örnekleri","Python'da sıralama ve arama algoritmalarının temellerini örneklerle, performans notları ve pratik ipuçlarıyla öğrenin.","\u003Ch2>Giriş\u003C/h2>\n\u003Cp>Sıralama ve arama algoritmaları, veriyi düzenleme ve hızlı erişim sağlayabilmek için programlamanın temel taşlarındandır. Bu yazıda Python'da sık kullanılan sıralama yöntemlerini (Kabarcık, Seçmeli, Eklemeli) ve Python'un yerleşik yaklaşımı ile arama algoritmalarını (Doğrusal ve İkili arama) adım adım göreceksiniz. Temel amaç: nasıl çalıştıklarını anlamak, hangi durumda hangisini tercih edeceğinize dair pratik kararlar alabilmektir.\u003C/p>\n\u003Cp>Python'un yerleşik sıralama davranışı ve önerileri için resmi belgeye bakabilirsiniz: \u003Ca href=\"https://docs.python.org/tr/3.11/howto/sorting.html\">Sıralama NASIL YAPILIR — Python 3.11\u003C/a>. Google'ın eğitim içeriği de pratik örnekler sunar: \u003Ca href=\"https://developers.google.com/edu/python/sorting?hl=tr\">Python Sıralama | Google Developers\u003C/a>. Arama algoritmaları ve veri yapıları hakkında açıklayıcı bir özet için bkz.: \u003Ca href=\"https://osmanbayrak.com.tr/python-ile-veri-yapilari-ve-algoritmalar/\">Python ile Veri Yapıları ve Algoritmalar — Osman Bayrak\u003C/a>.\u003C/p>\n\n\u003Ch2>Sıralama algoritmalarına hızlı bakış\u003C/h2>\n\u003Cp>Aşağıda sık karşılaşılan yöntemlerin kısa karşılaştırması yer alıyor:\u003C/p>\n\u003Cul>\n  \u003Cli>\u003Cstrong>Yerleşik Python sıralaması (Timsort)\u003C/strong>: Python'un \u003Ccode>sorted()\u003C/code> ve \u003Ccode>list.sort()\u003C/code> fonksiyonları adaptif, stabil bir algoritma kullanır; genel kullanım için önerilir. Ayrıntılar için Python belgelerine bakın.\u003C/li>\n  \u003Cli>\u003Cstrong>Kabarcık Sıralama (Bubble Sort)\u003C/strong>: Basit, ancak büyük veri için verimsiz (O(n²) zaman karmaşıklığı). Genellikle öğrenme amaçlıdır.\u003C/li>\n  \u003Cli>\u003Cstrong>Seçmeli Sıralama (Selection Sort)\u003C/strong>: Her adımda en küçük/ en büyük öğeyi seçip yer değiştirir; kabarcık gibi O(n²) karmaşıklığa sahiptir.\u003C/li>\n  \u003Cli>\u003Cstrong>Eklemeli Sıralama (Insertion Sort)\u003C/strong>: Küçük veya neredeyse sıralı veri setlerinde etkili; ortalama O(n²) ama küçük n'lerde hızlıdır.\u003C/li>\n\u003C/ul>\n\u003Cp>Python'un yerleşik sıralama fonksiyonları çoğu durumda en iyi tercih olacaktır; özel durumlar ve eğitim amaçlı açıklamalar için klasik algoritmaları incelemek yararlıdır (\u003Ca href=\"https://docs.python.org/tr/3.11/howto/sorting.html\">Python docs\u003C/a>, \u003Ca href=\"https://developers.google.com/edu/python/sorting?hl=tr\">Google Developers\u003C/a>).\u003C/p>\n\n\u003Ch3>Yerleşik sıralama: Timsort ve kullanımı\u003C/h3>\n\u003Cp>Python'daki \u003Ccode>sorted()\u003C/code> ve \u003Ccode>list.sort()\u003C/code> fonksiyonları, kararlı (stable) ve adaptif bir algoritma uygular. Genel tavsiye: veri tipleri karışıksa veya performans kritik değilse yerleşik fonksiyonları kullanın; bu fonksiyonlar key ve reverse argümanlarıyla esnek davranır.\u003C/p>\n\u003Cblockquote>\n  \u003Cp>nums = [5, 2, 9, 1]\u003Cbr>sorted_nums = sorted(nums)  # yeni liste döner\u003Cbr>nums.sort(reverse=True)      # aynı listeyi tersine sıralar\u003C/p>\n\u003C/blockquote>\n\u003Cp>Ayrıca karmaşık nesneler için \u003Ccode>key\u003C/code> parametresi kullanarak anahtar fonksiyona göre sıralama yapabilirsiniz. (Detaylar: \u003Ca href=\"https://docs.python.org/tr/3.11/howto/sorting.html\">Python Sıralama Rehberi\u003C/a>.)\u003C/p>\n\n\u003Ch3>Kabarcık (Bubble) Sıralama\u003C/h3>\n\u003Cp>Algoritma: Listenin sonuna doğru büyük elemanları \"kabarcık\" gibi iteratif olarak itersiniz. Öğrenmesi kolaydır, ancak verimlilik düşük olduğu için üretim kodlarında nadiren tercih edilir.\u003C/p>\n\u003Cblockquote>\n  \u003Cp>def bubble_sort(a):\u003Cbr>    n = len(a)\u003Cbr>    for i in range(n):\u003Cbr>        for j in range(0, n - i - 1):\u003Cbr>            if a[j] &gt; a[j + 1]:\u003Cbr>                a[j], a[j + 1] = a[j + 1], a[j]\u003C/p>\n\u003C/blockquote>\n\u003Cp>Zaman karmaşıklığı: tipik olarak O(n²). Eğitim için yararlıdır; gerçek veri kümeleri için yerleşik sıralamalar daha uygundur.\u003C/p>\n\n\u003Ch3>Seçmeli (Selection) Sıralama\u003C/h3>\n\u003Cp>Algoritma: Her iterasyonda kalan kısmın en küçük öğesini bulup ilk pozisyonla takas edersiniz.\u003C/p>\n\u003Cblockquote>\n  \u003Cp>def selection_sort(a):\u003Cbr>    n = len(a)\u003Cbr>    for i in range(n):\u003Cbr>        min_idx = i\u003Cbr>        for j in range(i+1, n):\u003Cbr>            if a[j] &lt; a[min_idx]:\u003Cbr>                min_idx = j\u003Cbr>        a[i], a[min_idx] = a[min_idx], a[i]\u003C/p>\n\u003C/blockquote>\n\u003Cp>Seçmeli sıralama da O(n²) zaman alır; sabit bellek kullanımı avantajıdır.\u003C/p>\n\n\u003Ch3>Eklemeli (Insertion) Sıralama\u003C/h3>\n\u003Cp>Algoritma: Listeyi soldan sağa tarayıp her öğeyi uygun konuma \"yerleştirirsiniz\". Veri kısmen sıralıysa oldukça etkilidir.\u003C/p>\n\u003Cblockquote>\n  \u003Cp>def insertion_sort(a):\u003Cbr>    for i in range(1, len(a)):\u003Cbr>        key = a[i]\u003Cbr>        j = i - 1\u003Cbr>        while j &gt;= 0 and a[j] &gt; key:\u003Cbr>            a[j + 1] = a[j]\u003Cbr>            j -= 1\u003Cbr>        a[j + 1] = key\u003C/p>\n\u003C/blockquote>\n\u003Cp>Küçük veya neredeyse sıralı listeler için insertion sort pratik bir seçim olabilir.\u003C/p>\n\n\u003Chr>\n\n\u003Ch2>Arama algoritmaları\u003C/h2>\n\u003Cp>Arama yaparken öncelikle verinin sıralı olup olmadığına bakın. Sıralı veri, ikili arama gibi hızlı yöntemlere izin verir.\u003C/p>\n\n\u003Ch3>Doğrusal (Linear) Arama\u003C/h3>\n\u003Cp>Her öğeyi sırayla kontrol eden basit yöntem. Sıralama gerektirmez, ancak büyük listelerde yavaştır.\u003C/p>\n\u003Cblockquote>\n  \u003Cp>def linear_search(a, target):\u003Cbr>    for i, v in enumerate(a):\u003Cbr>        if v == target:\u003Cbr>            return i\u003Cbr>    return -1\u003C/p>\n\u003C/blockquote>\n\u003Cp>Zaman karmaşıklığı: O(n). Küçük boyutlu veya sıralı olmayan veri için uygundur. (Genel açıklamalar için bkz.: \u003Ca href=\"https://osmanbayrak.com.tr/python-ile-veri-yapilari-ve-algoritmalar/\">Osman Bayrak – Veri Yapıları ve Algoritmalar\u003C/a>.)\u003C/p>\n\n\u003Ch3>İkili (Binary) Arama\u003C/h3>\n\u003Cp>Sıralı bir listede çalışır; aranan aralıktaki öğe her adımda yarıya indirilir, bu yüzden O(log n) zaman alır. Python'da kendi implementasyonunuzu yazabilir veya \u003Ccode>bisect\u003C/code> modülünü kullanabilirsiniz.\u003C/p>\n\u003Cblockquote>\n  \u003Cp>def binary_search(a, target):\u003Cbr>    lo = 0\u003Cbr>    hi = len(a) - 1\u003Cbr>    while lo &lt;= hi:\u003Cbr>        mid = (lo + hi) // 2\u003Cbr>        if a[mid] == target:\u003Cbr>            return mid\u003Cbr>        elif a[mid] &lt; target:\u003Cbr>            lo = mid + 1\u003Cbr>        else:\u003Cbr>            hi = mid - 1\u003Cbr>    return -1\u003C/p>\n\u003C/blockquote>\n\u003Cp>Alternatif olarak:\u003C/p>\n\u003Cblockquote>\n  \u003Cp>import bisect\u003Cbr>i = bisect.bisect_left(sorted_list, target)\u003Cbr>if i &lt; len(sorted_list) and sorted_list[i] == target:\u003Cbr>    # bulundu\u003C/p>\n\u003C/blockquote>\n\n\u003Ch2>Pratik örnek: Sıralama sonra arama\u003C/h2>\n\u003Cp>Problem: Karışık bir sayı listesinde bir değerin olup olmadığını hızlıca kontrol etmek istiyorsunuz. Adımlar:\u003C/p>\n\u003Col>\n  \u003Cli>Yerleşik \u003Ccode>sorted()\u003C/code> ile listeyi sırala (veya \u003Ccode>.sort()\u003C/code> kullanarak yerinde sırala).\u003C/li>\n  \u003Cli>İkili arama ile arama yap (kendi fonksiyonun veya \u003Ccode>bisect\u003C/code>).\u003C/li>\n\u003C/ol>\n\u003Cblockquote>\n  \u003Cp>arr = [7, 2, 5, 10, 3]\u003Cbr>arr.sort()\u003Cbr>idx = binary_search(arr, 5)  # ya da bisect kullan\u003C/p>\n\u003C/blockquote>\n\u003Cp>Bu yaklaşım, çok sayıda arama yapılacağı durumlarda avantajlıdır: bir kez sıralayıp sonra hızlı arama yaparsınız. Python'un yerleşik sıralaması genelde başlangıç maliyetini dengeleyecek hızdadır (\u003Ca href=\"https://docs.python.org/tr/3.11/howto/sorting.html\">Python docs\u003C/a>).\u003C/p>\n\n\u003Ch3>Performans ölçümü\u003C/h3>\n\u003Cp>Basit zaman ölçümü için \u003Ccode>time.perf_counter()\u003C/code> veya \u003Ccode>timeit\u003C/code> kullanılabilir. Gerçek veriler, verinin dağılımı ve çalışma ortamı sonuçları etkiler; bu yüzden kendi veriniz üzerinde test yapmak en güvenilir yoldur.\u003C/p>\n\u003Cblockquote>\n  \u003Cp>import time\u003Cbr>t0 = time.perf_counter()\u003Cbr>sorted_list = sorted(big_list)\u003Cbr>t1 = time.perf_counter()\u003Cbr>print('sort time', t1 - t0)\u003C/p>\n\u003C/blockquote>\n\n\u003Ch2>Pratik ipuçları ve seçim rehberi\u003C/h2>\n\u003Cul>\n  \u003Cli>Genel amaçlı sıralama için \u003Cstrong>sorted()\u003C/strong> veya \u003Cstrong>list.sort()\u003C/strong> kullanın; bunlar Timsort tabanlıdır ve çoğu duruma uygundur (\u003Ca href=\"https://docs.python.org/tr/3.11/howto/sorting.html\">Python docs\u003C/a>).\u003C/li>\n  \u003Cli>Küçük veya neredeyse sıralı veri için \u003Cstrong>insertion sort\u003C/strong> etkili olabilir.\u003C/li>\n  \u003Cli>Büyük veri setlerinde O(n log n) olan yerleşik sıralamalar tercih edilir.\u003C/li>\n  \u003Cli>Eğer veriniz sıralıysa, \u003Cstrong>binary search\u003C/strong> ile O(log n) arama yapabilirsiniz; aksi halde önce sıralama gerekir veya linear search tercih edilir.\u003C/li>\n  \u003Cli>Sıralama sırasında karmaşık anahtarlar için \u003Ccode>key\u003C/code> argümanını kullanın (ör. tuple'lar, dict değerleri vb.).\u003C/li>\n\u003C/ul>\n\n\u003Ch2>Kaynaklar ve ileri okuma\u003C/h2>\n\u003Cul>\n  \u003Cli>\u003Ca href=\"https://docs.python.org/tr/3.11/howto/sorting.html\">Sıralama NASIL YAPILIR — Python 3.11\u003C/a> (resmi belge).\u003C/li>\n  \u003Cli>\u003Ca href=\"https://developers.google.com/edu/python/sorting?hl=tr\">Python Sıralama | Google Developers\u003C/a> (eğitim materyali).\u003C/li>\n  \u003Cli>\u003Ca href=\"https://osmanbayrak.com.tr/python-ile-veri-yapilari-ve-algoritmalar/\">Python ile Veri Yapıları ve Algoritmalar — Osman Bayrak\u003C/a> (algoritma özetleri).\u003C/li>\n\u003C/ul>\n\n\u003Ch2>Kontrol listesi (Quick checklist)\u003C/h2>\n\u003Cul>\n  \u003Cli>Veri sıralı mı? → Evet: ikili arama; Hayır: sıralama veya doğrusal arama.\u003C/li>\n  \u003Cli>Aynı anahtara göre sıralama gerekiyor mu? → \u003Ccode>key\u003C/code> ve stabil sıralama kullanın.\u003C/li>\n  \u003Cli>Performans kritik mi? → Yerleşik \u003Ccode>sort\u003C/code> genelde en iyi başlangıç noktasıdır.\u003C/li>\n\u003C/ul>\n","Python'da Temel Algoritmalar: Sıralama ve Arama Örnekleri","Bu rehberde Python'da temel sıralama ve arama algoritmalarını (Bubble, Selection, Insertion, Timsort; Doğrusal ve İkili arama) örnek kodlarla, zaman karmaşıklık","Temel Algoritmalar, sorting örnekleri, searching algoritmaları, algoritma snippetleri, Python sıralama, Python arama","siralama-ve-arama-python-ile-anlasilir-algoritma-ornekleri","2026-05-09T09:14:16.000Z",{"id":16,"title":17,"slug":18},206,"Temel Algoritmalar","temel-algoritmalar",{"id":20,"name":21,"nickname":22,"slug":23},92,"Burak Demirtaş","CodeMentor","burak-demirtas","/media/blog/160ee74b8040108a0245bf48c341f6be.jpg","/media/blog/160ee74b8040108a0245bf48c341f6be_thumb.jpg","/media/blog/160ee74b8040108a0245bf48c341f6be.webp","/media/blog/160ee74b8040108a0245bf48c341f6be_thumb.webp",null,{"minutes":30,"wordCount":31,"imageCount":32,"formatted":33},5,932,0,"5 dk okuma süresi","/blog/temel-algoritmalar/siralama-ve-arama-python-ile-anlasilir-algoritma-ornekleri",[],["Reactive",37],{"title":7,"subTitle":17,"image":24},["Reactive",39],{"title":10,"meta":40,"link":75},[41,43,45,48,51,54,57,60,63,66,69,71,73],{"hid":42,"name":42,"content":11},"description",{"hid":44,"name":44,"content":12},"keywords",{"hid":46,"name":46,"content":47},"author","Başlangıç Seviyesi Kod & Snippet Rehberi",{"hid":49,"name":49,"content":50},"robots","index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1",{"hid":52,"property":52,"content":53},"og:type","website",{"hid":55,"property":55,"content":56},"og:title","Başlangıç Kod & Snippet Rehberi | KodÖğreniyorum",{"hid":58,"property":58,"content":59},"og:description","Yeni başlayanlara yönelik kısa kod örnekleri, snippet'ler ve adım adım alıştırmalar. Hızlı uygulamalarla temel programlama mantığını pekiştir.",{"hid":61,"property":61,"content":62},"og:image","https://kodogreniyorum.com/media/blog/160ee74b8040108a0245bf48c341f6be.jpg",{"hid":64,"property":64,"content":65},"og:url","https://kodogreniyorum.com/blog/temel-algoritmalar/siralama-ve-arama-python-ile-anlasilir-algoritma-ornekleri",{"hid":67,"name":67,"content":68},"twitter:card","summary_large_image",{"hid":70,"name":70,"content":56},"twitter:title",{"hid":72,"name":72,"content":59},"twitter:description",{"hid":74,"name":74,"content":62},"twitter:image",[76,78],{"rel":77,"href":65},"canonical",{"rel":79,"href":80},"amphtml","https://amp.kodogreniyorum.com/blog/temel-algoritmalar/siralama-ve-arama-python-ile-anlasilir-algoritma-ornekleri",["Reactive",82],{"@context":83,"@graph":84},"https://schema.org",[85,98],{"@type":86,"headline":10,"image":62,"author":87,"publisher":90,"datePublished":14,"dateModified":14,"mainEntityOfPage":96,"description":11},"BlogPosting",{"@type":88,"name":21,"url":89},"Person","https://kodogreniyorum.com/yazarlar/burak-demirtas",{"@type":91,"name":47,"logo":92},"Organization",{"@type":93,"url":94,"width":95,"height":95},"ImageObject","https://kodogreniyorum.com/img/icons/favicon.png",32,{"@type":97,"@id":65},"WebPage",{"@type":99,"itemListElement":100},"BreadcrumbList",[101,106,110,113],{"@type":102,"position":103,"name":104,"item":105},"ListItem",1,"Ana Sayfa","https://kodogreniyorum.com",{"@type":102,"position":107,"name":108,"item":109},2,"Blog","https://kodogreniyorum.com/blog",{"@type":102,"position":111,"name":17,"item":112},3,"https://kodogreniyorum.com/blog/temel-algoritmalar",{"@type":102,"position":114,"name":7,"item":65},4]