Seçmeli 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 Yöntem
    • 1.1 Sözde Kodu
  • 2 Seçmeli Sıralama Algoritmasının Örnek Kodu
  • 3 Karmaşıklık Hesabı
  • 4 Diğer Sıralama Algoritmaları
  • 5 Kaynakça
  • 6 Dış bağlantılar

Seçmeli sıralama

  • العربية
  • Azərbaycanca
  • Български
  • भोजपुरी
  • Čeština
  • Dansk
  • Deutsch
  • Ελληνικά
  • English
  • Español
  • Eesti
  • فارسی
  • Suomi
  • Français
  • עברית
  • हिन्दी
  • Magyar
  • Հայերեն
  • İtaliano
  • 日本語
  • ქართული
  • Қазақша
  • ಕನ್ನಡ
  • 한국어
  • Lombard
  • Lietuvių
  • മലയാളം
  • Nederlands
  • Polski
  • Português
  • Русский
  • Simple English
  • Slovenčina
  • Slovenščina
  • Српски / srpski
  • Svenska
  • ไทย
  • Tagalog
  • Українська
  • Oʻzbekcha / ўзбекча
  • 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
(Seçmeli Sıralama sayfasından yönlendirildi)
Seçmeli sıralama
Seçmeli sıralama algoritması
SınıfSıralama algoritması
Veri yapısıDizi
Zaman karmaşıklığıO(n²)
En iyiGenellikle değil
Alan karmaşıklığıtoplamda О(n), ek alan O(1)

Seçmeli Sıralama, bilgisayar bilimlerinde kullanılan bir sıralama algoritmasıdır. Karmaşıklığı O ( n 2 ) {\displaystyle {\mathcal {O}}(n^{2})} {\displaystyle {\mathcal {O}}(n^{2})} olduğu için büyük listeler üzerinde kullanıldığında verim sağlamaz ve genel olarak benzeri olan eklemeli sıralamadan daha başarısızdır. Seçmeli sıralama yalın olduğu ve bazı durumlarda daha karmaşık olan algoritmalardan daha iyi sonuç verdiği için tercih edilebilir.

Seçmeli Sıralama'nın nasıl çalıştığını gösteren görüntü

Yöntem

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

Algoritma aşağıdaki gibi çalışır:

  1. Listedeki en küçük değerli öğeyi bul.
  2. İlk konumdaki öğeyle bulunan en küçük değerli öğenin yerini değiştir.
  3. Yukarıdaki adımları listenin ilk elemanından sonrası için (ikinci elemandan başlayarak) yinele.

Sözde Kodu

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

A sıralanacak öğeler kümesi, n ise A'daki öğe sayısıdır. Dizi 0 numaralı dizinle başlamaktadır.

for i ← 0 to n-2 do
    min ← i
    for j ← (i + 1) to n-1 do
        if A[j] < A[min]
            min ← j
    swap A[i] and A[min]

Seçmeli Sıralama Algoritmasının Örnek Kodu

[değiştir | kaynağı değiştir]
int enkucuk, yedek;
for (int i = 0; i < dizi.Length-1; i++)
{
    enkucuk = i;
    for (int j = i+1; j < dizi.Length; j++)
    {
        if (dizi[j]<dizi[enkucuk])
        {
            enkucuk = j;
        }
    }

    if (enkucuk != i)
    {
        yedek = dizi[i];
        dizi[i] = dizi[enkucuk];
        dizi[enkucuk] = yedek;
    }               
}
public int[] secmeliSiralama(int[] dizi)
{
    int enkucuk, yedek;
    for (int i = 0; i < dizi.Length - 1; i++)
    {
         enkucuk = i;
         for (int j = i + 1; j < dizi.Length; j++)
             if (dizi[j] < dizi[enkucuk])
                 enkucuk = j;
         if (enkucuk != i)
         {
             yedek = dizi[i];
             dizi[i] = dizi[enkucuk];
             dizi[enkucuk] = yedek;
         }
     }
     return dizi;
}

Karmaşıklık Hesabı

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

Seçmeli 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. Seçmeli sıralama algoritması n {\textstyle n} {\textstyle n} elemanlı bir listede, en küçük eleman için n − 1 {\textstyle n-1} {\textstyle n-1} tane karşılaştırma yapar, ikinci en küçük eleman için n − 2 {\textstyle n-2} {\textstyle n-2} tane karşılaştırma yapar, diğer elemanlar için karşılaştırma sayısı n − 3 {\textstyle n-3} {\textstyle n-3}, n − 4 {\textstyle n-4} {\textstyle n-4}, ..., 2, 1, 0 şeklinde azalarak devam eder. Listedeki bütün elemanlar için yapılan karşılaştırmaların toplamı

( n − 1 ) + ( n − 2 ) + ( n − 3 ) + ( n − 4 ) + . . . + 2 + 1 + 0 = n ( n − 1 ) / 2 {\displaystyle (n-1)+(n-2)+(n-3)+(n-4)+...+2+1+0=n(n-1)/2} {\displaystyle (n-1)+(n-2)+(n-3)+(n-4)+...+2+1+0=n(n-1)/2}yapar.

Her bir eleman için bir kez yer değiştirme yapılır, tüm liste için toplam n {\textstyle n} {\textstyle n} tane yer değiştirme işlemi yapılır. Hesaplamalar sonucunda elde edilen

n + n ( n − 1 ) / 2 {\displaystyle n+n(n-1)/2} {\displaystyle n+n(n-1)/2}değerlerinin asimptotik üst sınırı O ( n 2 ) {\textstyle O(n^{2})} {\textstyle O(n^{2})} değerini verir. Seçmeli sıralama algoritması listenin en küçük elemanının nerede olduğunu bilmediği ve her bir eleman için tüm elemanlarla karşılaştırma yaptığı için liste içindeki elemanların rastgele sıralanmış ya da eşit elemanlardan oluşmasını dikkate almaz, bu sebeple seçmeli sıralama algoritması her durumda O ( n 2 ) {\textstyle O(n^{2})} {\textstyle O(n^{2})} karmaşıklığıyla çalışır.[1]

Yukarıdaki şekil, 6 elemanlı içeriği karışık olarak verilmiş bir bir sayı dizisinin Seçmeli Sıralama algoritması kullanılarak nasıl küçükten-büyüğe doğru sıralandığını göstermektedir. 1. adımda dizinin ilk elemanı (6) alınır. Bu eleman diğer 5 eleman ile karşılaştırılır. Eğer bulunan eleman(1) ilk elemandan küçükse 1.elman ile yer değiştirilir. 2. adımda dizinin ikinci elemanı(3) alınır. Bu eleman kalan 4 eleman ile karşılaştırılır. Eğer bulunan eleman(2) ikinci elemandan küçükse 2. eleman ile yer değiştirilir ve bu işlem dizi sonuna kadar devam eder. Böylelikle dizi küçükten-büyüğe sıralanmış olur.

Diğer Sıralama Algoritmaları

[değiştir | kaynağı değiştir]
  • Hızlı Sıralama
  • Birleştirmeli Sıralama
  • Kabarcık Sıralaması
  • Kokteyl Sıralaması
  • Tarak Sıralaması

Kaynakça

[değiştir | kaynağı değiştir]
  1. ^ Robert Sedgewick, Kevin Wayne, Algorithms 4th Edition, Addison-Wesley 2011 (chapter 2 p. 248)

Dış bağlantılar

[değiştir | kaynağı değiştir]
  • Analyze Selection Sort in an online JavaScript IDE
  • Selection Sort in C++
  • Selection Sort Demo7 Mart 2008 tarihinde Wayback Machine sitesinde arşivlendi.
  • Selection Sort Demo[ölü/kırık bağlantı]
  • Selection Sort Demonstration
  • Pointers to selection sort visualizations
  • C++ Program - Selection Sort 12 Mart 2008 tarihinde Wayback Machine sitesinde arşivlendi.
  • Selection sort explained and C++ source code
  • A graphical demonstration and discussion of selection sort
  • Selection sort in C
"https://tr.wikipedia.org/w/index.php?title=Seçmeli_sıralama&oldid=32853159" 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
  • Sayfa en son 11.12, 21 Mayıs 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
Seçmeli sıralama
Konu ekle