İplik sıralaması - 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 Örnek
  • 2 Sözde Kodu
  • 3 Uygulama Örnekleri
    • 3.1 C# ile uygulama
    • 3.2 Java ile uygulama

İplik sıralaması

  • Čeština
  • English
  • فارسی
  • Português
  • Српски / srpski
  • ไทย
  • Українська
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
  • Vikiveri ögesi
Görünüm
Vikipedi, özgür ansiklopedi
(İplik Sıralaması sayfasından yönlendirildi)
Bu madde hiçbir kaynak içermemektedir. Lütfen güvenilir kaynaklar ekleyerek madde içeriğinin geliştirilmesine yardımcı olun. Kaynaksız içerik itiraz konusu olabilir ve kaldırılabilir.
Kaynak ara: "İplik sıralaması" – haber · gazete · kitap · akademik · JSTOR
(Temmuz 2024) (Bu şablonun nasıl ve ne zaman kaldırılması gerektiğini öğrenin)

İplik sıralaması (İngilizce: Strand sort) bilgisayar bilimlerinde kullanılan bir sıralama algoritmasıdır. Sıralanacak olan dizinin, sıralanmış alt dizilerinin oluşturularak bu alt dizilerin birleştirilmesi yoluyla sonucun oluşturulması mantığına dayanır. Algoritmanın her bir aşamasında ana dizinin üzerinden geçilir ve bu diziden zaten sıralanmış olan bir dizi eleman çıkarılır. Çıkarılan bu eleman dizileri daha sonra birleştirilir.

Algoritmanın adı, sıralanacak dizinin içinden çıkan kendi içinde sıralanmış alt dizilerin ipliklere benzetilmesinden gelmektedir. İplik sıralaması algoritması, ana diziden ipleri çıkarırken ve oluşan sıralı ipleri birleştirirken karşılaştırma kullandığı için bir karşılaştırma sıralamasıdır.

İplik sıralaması algoritmasının karmaşıklığı ortalamada O(n log n)'dir. Sıralanacak dizinin zaten sıralı olduğu en iyi durumda algoritmanın karmaşıklığı O(n), sıralanacak dizinin tersten sıralı olduğu en kötü durumda ise algoritmanın karmaşıklığı O(n2)'dir.

Örnek

[değiştir | kaynağı değiştir]
  1. Sıralanacak dizinin üzerinden bir kere geçilir ve yükselen (sıralı) sayılar alınır.
  2. Sıralı olan alt dizi ilk yinelemenin ardından boş olan sıralanmış dizinin üstüne konur.
  3. Ana dizinin üzerinden yeniden geçilir ve kendi içinde sıralı yeni bir alt dizi çıkarılır.
  4. Artık sıralanmış dizi boş olmadığından yeni çıkarılan alt dizi sıralanmış diziyle birleştirilir.
  5. Alt dizi ve ana dizi boşalana kadar 3 ve 4. adımlar yinelenir.
Sıralanmamış dizi Alt dizi Sıralanmış dizi
3 1 5 4 2
1 4 2 3 5
1 4 2 3 5
2 1 4 3 5
2 1 3 4 5
2 1 3 4 5
1 2 3 4 5

Sözde Kodu

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

İplik sıralamasının yalın bir sözde kodu aşağıda verilmiştir:

procedure strandSort( A : list of sortable items ) defined as:
  while length( A ) > 0
    clear sublist
    sublist[ 0 ] := A[ 0 ]
    remove A[ 0 ]
    for each i in 0 to length( A ) do:
      if A[ i ] > sublist[ last ] then
        append A[ i ] to sublist
        remove A[ i ]
      end if
    end for
    merge sublist into results
  end while
  return results
end procedure

Uygulama Örnekleri

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

C# ile uygulama

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

Aşağıdaki program iplik sıralamasının C# kullanılarak oluşturulmuş bir uygulamasıdır:

 public static LinkedList<int> sort(LinkedList<int> array) {
   LinkedList<int> results = new LinkedList<int>();
   LinkedList<int> sublist = new LinkedList<int>();
   while (array.Count != 0)
   {
     sublist.Clear();
     sublist.AddLast(array.First.Value);
     array.RemoveFirst();
     LinkedListNode<int> i = array.First;
     while (i != null)
     {
       if(i.Value >= sublist.Last.Value)
       {
         sublist.AddLast(i.Value);
         LinkedListNode<int> temp = i;
         i = i.Next;
         array.Remove(temp);
       }
       else
       {
         i = i.Next;
       }
     }

     i = results.First;
     while (sublist.Count != 0)
     {
       if (i == null)
       {
         results.AddLast(sublist.First.Value);
         sublist.RemoveFirst();
       }
       else if (sublist.First.Value < i.Value)
       {
         results.AddBefore(i, sublist.First.Value);
         sublist.RemoveFirst();
       }
       else
       {
         i = i.Next;
       }
     }
   }
   return results;
 }

Java ile uygulama

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

Aşağıdaki program iplik sıralamasının Java kullanılarak oluşturulmuş bir uygulamasıdır:

public static <E extends Comparable<? super E>> List<E> sort(Collection<E> coll) {
  List<E> results = new LinkedList<E>();

  while (!coll.isEmpty())
  {
    LinkedList<E> sublist = new LinkedList<E>();
    Iterator<E> i = coll.iterator();
    sublist.addLast(i.next());
    while (i.hasNext())
    {
      E val = i.next();
      if (val.compareTo(sublist.getLast()) >= 0)
      {
        sublist.addLast(val);
        i.remove();
      }
    }

    if (!results.isEmpty())
    {
      ListIterator<E> li = results.listIterator();
      E current = li.next();
      while (!sublist.isEmpty())
      {
        if (sublist.getFirst().compareTo(current) < 0)
          li.add(sublist.removeFirst());
        else if (li.hasNext())
          current = li.next();
        else
          break;
      }
    }
    results.addAll(sublist);
  }
  return results;
}
"https://tr.wikipedia.org/w/index.php?title=İplik_sıralaması&oldid=33564432" sayfasından alınmıştır
Kategori:
  • Sıralama algoritmaları
Gizli kategori:
  • Kaynakları olmayan maddeler Temmuz 2024
  • Sayfa en son 21.43, 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
İplik sıralaması
Konu ekle