Eklemeli sıralama - Vikipedi
İçeriğe atla
Ana menü
Gezinti
  • Anasayfa
  • Hakkımızda
  • İçindekiler
  • Rastgele madde
  • Seçkin içerik
  • Yakınımdakiler
Katılım
  • Deneme tahtası
  • Köy çeşmesi
  • Son değişiklikler
  • Dosya yükle
  • Topluluk portalı
  • Wikimedia dükkânı
  • Yardım
  • Özel sayfalar
Vikipedi Özgür Ansiklopedi
Ara
  • Bağış yapın
  • Hesap oluştur
  • Oturum aç
  • Bağış yapın
  • Hesap oluştur
  • Oturum aç

İçindekiler

  • Giriş
  • 1 Çalışma Prensibi
    • 1.1 Aşama aşama bir örnek
  • 2 Sözde Kodu(Pseudo Code)
  • 3 Karmaşıklık Hesabı
  • 4 Notlar
  • 5 Kaynakça
  • 6 Dış bağlantılar

Eklemeli sıralama

  • العربية
  • Azərbaycanca
  • Български
  • বাংলা
  • Čeština
  • Dansk
  • Deutsch
  • Ελληνικά
  • English
  • Español
  • Eesti
  • فارسی
  • Suomi
  • Français
  • עברית
  • Magyar
  • Հայերեն
  • Íslenska
  • İtaliano
  • 日本語
  • ქართული
  • 한국어
  • Lombard
  • Lietuvių
  • മലയാളം
  • Nederlands
  • Norsk bokmål
  • Polski
  • Português
  • Русский
  • Simple English
  • Slovenčina
  • Slovenščina
  • Српски / srpski
  • Svenska
  • ไทย
  • Українська
  • Tiếng Việt
  • 中文
Bağlantıları değiştir
  • Madde
  • Tartışma
  • Oku
  • Değiştir
  • Kaynağı değiştir
  • Geçmişi gör
Araçlar
Eylemler
  • Oku
  • Değiştir
  • Kaynağı değiştir
  • Geçmişi gör
Genel
  • Sayfaya bağlantılar
  • İlgili değişiklikler
  • Kalıcı bağlantı
  • Sayfa bilgisi
  • Bu sayfayı kaynak göster
  • Kısaltılmış URL'yi al
  • Karekodu indir
Yazdır/dışa aktar
  • Bir kitap oluştur
  • PDF olarak indir
  • Basılmaya uygun görünüm
Diğer projelerde
  • Wikimedia Commons
  • Vikiveri ögesi
Görünüm
Vikipedi, özgür ansiklopedi
Eklemeli sıralama
Eklemeli sıralama algoritmasının rastgele üretilmiş sayıları nasıl sıraya dizdiğini gösteren bir örnek
SınıfSıralama algoritması
Veri yapısıDizi
Zaman karmaşıklığı O ( n 2 ) {\displaystyle O(n^{2})} {\displaystyle O(n^{2})} karşılaştırma ve yerdeğiştirme
En iyiGenellikle değil
Ortalama O ( n 2 ) {\displaystyle O(n^{2})} {\displaystyle O(n^{2})} karşılaştırma ve yerdeğiştirme
Alan karmaşıklığıtoplam O ( n ) {\displaystyle O(n)} {\displaystyle O(n)}, fazladan O ( 1 ) {\displaystyle O(1)} {\displaystyle O(1)}

Eklemeli Sıralama (İngilizce: Insertion Sort), bilgisayar bilimlerinde kullanılan ve sıralı diziyi her adımda öğe öğe oluşturan bir sıralama algoritmasıdır. Büyük dizilerle çalışıldığında hızlı sıralama, birleştirmeli sıralama ve yığın sıralaması gibi daha gelişmiş sıralama algoritmalarından daha verimsiz çalışır. Ancak buna karşın bazı artıları da vardır:

  • Uygulaması kolaydır.
  • Küçük Veri kümeleri üzerinde kullanıldığında verimlidir.
  • Çoğunluğu zaten sıralanmış olan diziler üzerinde kullanıldığında verimlidir.
  • Karmaşıklığı O ( n 2 ) {\displaystyle {\mathcal {O}}(n^{2})} {\displaystyle {\mathcal {O}}(n^{2})} olan seçmeli sıralama ve kabarcık sıralaması gibi çoğu yalın sıralama algoritmalarından daha verimlidir.
  • Kararlı bir sıralama algoritmasıdır (değeri eşit olan öğelerin asıl listedeki göreceli konumlarını değiştirmez)
  • Sıralanacak diziyi yerinde sıralar, ek bir bellek alanı gerektirmez.
  • Sıralanacak dizinin hepsinin algoritmanın girdisi olmasına gerek yoktur. Dizi parça parça da alınabilir ve sıralama işlemi sırasında diziye yeni veriler eklenebilir.

İnsanlar herhangi bir şeyi (örneğin, iskambil kartları) sıralarken, çoğu durumda eklemeli sıralamaya benzer bir yöntem kullanırlar.[1]

Çalışma Prensibi

[değiştir | kaynağı değiştir]

Eklemeli Sıralama dizi içerisindeki bir girdinin ait olduğu yere oturtularak ilerlenmesi ve bu sayede her döngüde kontrol edilmesi gereken girdi sayısını azaltması prensibi ile çalışır. Bu durumu iskambil kağıtlarını elimizde dizmeye benzetebiliriz. İşaretlenen kağıt/girdi kendisinden önce ve kendisinden daha büyük bir sayı kalmayana kadar başa çekilir. Arkasında kalan bütün indisler ise birer adım geriye düşer böylece bu döngü içerisindeki her adım bize, işaretlenen tüm girdilerin kendi sıralarında, kendilerinden önce sadece bu girdiden küçük sayıların kaldığını garanti eder.

Aşama aşama bir örnek

[değiştir | kaynağı değiştir]

8 2 4 9 3 6 --- > Bu sırasız, ham dizimiz.

8* 2 4 9 3 6 --- > Dizinin ilk indisi olan 8 seçildi. Öncesinde başka bir değer olmadığı için bir sonraki aşamaya geçiliyor.

8 2* 4 9 3 6 --- > Dizinin ikinci indisi olan 2 seçildi ve dizinin daha önce şu an tuttuğumuz 2 sayısından daha büyük bir değer oldukça başa taşınacak ve 8 ile yer değişecektir.

2 8 4* 9 3 6 --- > Benzer işlemleri bütün indislere sırası ile uyguluyoruz.

2 4 8 9* 3 6

2 4 8 9 3* 6

2 3 4 8 9 6*

2 3 4 6 8 9 --- > Sıralanmış dizimiz.[2]

Bu örnekte * ile işaretlenmiş sayılar elde tutulan ve gerisinde kalanlar ile kıyaslanan sayıyı ; _ ile işaretlenmiş indisler ise elde tutulan sayının çekilebildiği en geri indisi göstermektedir.

Sözde Kodu(Pseudo Code)

[değiştir | kaynağı değiştir]
insertionSort(array A)
    for i = 1 to length[A-1] do
        value = A[i]
        j = i-1
        while j >= 0 and A[j] > value
            A[j + 1] = A[j]
            j = j-1
        A[j+1] = value

Karmaşıklık Hesabı

[değiştir | kaynağı değiştir]

Eklemeli sıralama algoritmasının zaman karmaşıklığı hesaplanırken, yapılan karşılaştırmalar ve yer değiştirmeler dikkate alınır. Eklemeli sıralama algoritması  n {\textstyle n} {\textstyle n} elemanlı bir listede, ikinci eleman için en fazla 1 karşılaştırma ve 1 yer değiştirme yapar, üçüncü eleman için 2 karşılaştırma ve 2 yer değiştirme, dördüncü eleman için 3 karşılaştırma ve 3 yer değiştirme yapar. Bu şekilde son eleman için en fazla n − 1 {\textstyle n-1} {\textstyle n-1} karşılaştırma ve n − 1 {\textstyle n-1} {\textstyle n-1} yer değiştirme yapar. Listedeki bütün elemanlar için yapılan karşılaştırmaların ve yer değiştirmelerin toplamı

2 ( 1 + 2 + 3 + 4 + . . . + ( n − 2 ) + ( n − 1 ) ) = 2 ( n ( n − 1 ) / 2 ) = n ( n − 1 ) {\displaystyle 2(1+2+3+4+...+(n-2)+(n-1))=2(n(n-1)/2)=n(n-1)} {\displaystyle 2(1+2+3+4+...+(n-2)+(n-1))=2(n(n-1)/2)=n(n-1)}yapar. Hesaplamalar sonucunda elde edilen n ( n − 1 ) {\displaystyle n(n-1)} {\displaystyle n(n-1)}değerinin asimptotik üst sınırı O ( n 2 ) {\textstyle O(n^{2})} {\textstyle O(n^{2})} değerini verir.

En kötü başarım: Eklemeli sıralama algoritması en kötü durumda, örneğin liste tersten sıralıysa O ( n 2 ) {\textstyle O(n^{2})} {\textstyle O(n^{2})} karmaşıklıkla çalışır.

En iyi başarım: Eklemeli sıralama algoritması en iyi durumda, örneğin liste sıralıysa sadece n − 1 {\textstyle n-1} {\textstyle n-1} karşılaştırma yapar ve O ( n ) {\textstyle O(n)} {\textstyle O(n)} karmaşıklıkla çalışır.

Ortalama başarım: Eklemeli sıralama algoritması ortalama O ( n 2 ) {\textstyle O(n^{2})} {\textstyle O(n^{2})} karmaşıklıkla çalışır.[3]

Notlar

[değiştir | kaynağı değiştir]
  1. ^ Robert Sedgewick, Algorithms, Addison-Wesley 1983 (chapter 8 p. 95)
  2. ^ 6.006- Introduction to Algorithms (PDF), 1 Mayıs 2015 tarihinde kaynağından arşivlendi (PDF)17 Mart 2021 
  3. ^ Robert Sedgewick, Kevin Wayne, Algorithms 4th Edition, Addison-Wesley 2011 (chapter 2 p. 250)

Kaynakça

[değiştir | kaynağı değiştir]
  • Donald Knuth. The Art of Computer Programming, Volume 3: Sorting and Searching, Second Edition. Addison-Wesley, 1998. ISBN 0-201-89685-0. Section 5.2.1: Sorting by Insertion, pp. 80–105.

Dış bağlantılar

[değiştir | kaynağı değiştir]
  • Analyze Insertion Sort in an online Javascript IDE 10 Mayıs 2008 tarihinde Wayback Machine sitesinde arşivlendi.
  • Insertion Sort Java Applet 29 Ekim 2007 tarihinde Wayback Machine sitesinde arşivlendi.
  • Literate implementations of insertion sort in various languages on LiteratePrograms
  • Pointers to insertion sort visualizations
  • Insertion sort explained and C++ code
  • Page with visual demonstrations of sorting algorithms, all the implementation in Java.
  • A graphical demonstration and discussion of insertion sort
  • C/C++ implementation for a binary insertion sort[ölü/kırık bağlantı]
"https://tr.wikipedia.org/w/index.php?title=Eklemeli_sıralama&oldid=33561656" sayfasından alınmıştır
Kategori:
  • Sıralama algoritmaları
Gizli kategoriler:
  • Webarşiv şablonu wayback bağlantıları
  • Ölü dış bağlantıları olan maddeler
  • ISBN sihirli bağlantısını kullanan sayfalar
  • Sayfa en son 10.16, 27 Temmuz 2024 tarihinde değiştirildi.
  • Metin Creative Commons Atıf-AynıLisanslaPaylaş Lisansı altındadır ve ek koşullar uygulanabilir. Bu siteyi kullanarak Kullanım Şartlarını ve Gizlilik Politikasını kabul etmiş olursunuz.
    Vikipedi® (ve Wikipedia®) kâr amacı gütmeyen kuruluş olan Wikimedia Foundation, Inc. tescilli markasıdır.
  • Gizlilik politikası
  • Vikipedi hakkında
  • Sorumluluk reddi
  • Davranış Kuralları
  • Geliştiriciler
  • İstatistikler
  • Çerez politikası
  • Mobil görünüm
  • Wikimedia Foundation
  • Powered by MediaWiki
Eklemeli sıralama
Konu ekle