Bir sıralama algoritmasının “kararlı” olması ne anlama gelir?


43

Çeşitli sıralama algoritmalarını okurken, bazılarının "kararlı" ve bazılarının olmadığını belirttiğimi gördüm. Bu ne anlama geliyor ve bir algoritma seçerken bu temelde ne gibi travmalar söz konusu?


32
Bu soru wikipedia ile bir dakika içinde kolayca cevap olurdu. en.wikipedia.org/wiki/Sorting_algorithm
Mare Infinitus

5
@MareInfinitus Daha kesin bir şekilde: en.wikipedia.org/wiki/Sorting_algorithm#Stability
BЈовић

4
Bu, kendi araştırmasından mahrum bir soru. Bir wikipedia resmi ile cevap verdi. Ve bir şekilde beni üzen gerçekten iyi geribildirim alıyor. IMHO kapatılmalı ve fazla oy kullanmamalı.
Mare Infinitus

4
Diğer taraftan, bunu daha yeni gördüm ve yeni bir şey öğrendim. Bunu bilmediğimi bilseydim, o zaman araştırmış olabilirdim, ancak OP soruyu sorduğu için, bilmediğimi bilmediğimi biliyorum.
Kazark,

4
Genel olarak, "sadece google" veya "wikipedia'da arama yapma", StackExchange sitelerinde kabul edilebilir yanıtlar değildir. Çünkü şikayet sahibinin google ve wikipedia makamlarına yaptığı çağrı ile geçerli bir soru olarak doğruladıklarına cevap vermiyorlar. Soru kolayca programmers.stackexchange içindeki başka bir sorunun veya soruların bir kopyası ise, o zaman şikayet edebilirsiniz.
Michael Paulukonis

Yanıtlar:


88

Sabit bir sıralama, giriş kümesinin orijinal sırasını koruyan ve karşılaştırma algoritmasının iki veya daha fazla öğe arasında ayrım yapmadığı bir sıralamadır.

Tarafından kartlarını sıralayan bir sıralama algoritması düşünün rütbe değil takım elbise ile. Kararlı sıralama, aynı sıralamaya sahip orijinal kart sırasının korunmasını garanti eder; kararsız sıralama olmaz.

görüntü tanımını buraya girin


38
Düzeltme: Kararsız algoritma, iki eleman eşit olduğunda tanımsız davranış sergiler, sıranın bazen korunmuş olması tamamen mümkündür.
aaaaaaaaaaaa

9
Wikipedia benzer çok güzel bir resim en.wikipedia.org/wiki/Sorting_algorithm
Mare Infinitus

9
@MareInfinitus: Bu kamu malı. Orijinal görüntünün özniteliğini kontrol edin.
Robert Harvey,

2
İyi bir resim, ortalama durumdaki bir çok kelimeden daha hızlı ve daha derinleri açıklar. Yasal konular hakkında konuşmak istediğim şey değildi.
Mare Infinitus

3
@RobertHarvey Aslında, editörün doğru olduğuna inanıyorum. Göreviniz şu anda kararlı bir sıralamada aynı takımdaki kartların sırasını koruduğunu söylüyor, ancak aynı takımdaki kartların farklı sıralarda olacağı ve bu nedenle sıralı sıralama elde etmek için yeniden düzenlenmesi gerektiğini söylüyor. Örneğin, sıralama kalplerin 2 ve 5'in sırasını korumaz. Kararlı ve dengesiz arasındaki farkı yaratan aynı sıradaki (ve farklı kıyafetler) kartların sırasıdır.
David Z,

26

Kararlı algoritmalar, öğelerin göreceli sırasını korur.

Dolayısıyla, kararlı bir sıralama algoritması, eşit olarak karşılaştıran göreceli değer sırasını koruyacaktır.

X boyutuna göre 2d puanlık bir toplama yaptığımız bir sıralama algoritması düşünün.

Sıralanacak koleksiyon: {(6, 3), (5, 5), (6, 1), (1, 3)}

Kararlı Sıralama: {(1, 3), (5, 5), (6, 3), (6, 1)}

Düzenli Sıralama: Ya {(1, 3), (5, 5), (6, 3), (6, 1)}da{(1, 3), (5, 5), (6, 1), (6, 3)}


Tradeoff gelince ... iyi, istikrarlı sıralama daha az etkilidir, ancak bazen buna ihtiyacın var.

Örneğin, bir kullanıcı bir kullanıcı arayüzündeki değerleri sıralamak için sütun başlığını tıklattığında, önceki sıralama düzeninin eşit değerler olması durumunda kullanılmasını beklemek makul olur.


2
Yine de daha az verimli mi? “Belli” gibi görünüyor, ancak en iyi sıralama algoritmalarından bazıları doğaya göre kararlıdır (örneğin Tim sıralama gibi birleştirme sıralamalarına dayanan herhangi bir şey), kararlı olmaları için açık bir ekstra iş yapmaları gerekmez.

9
Stabilin genel olarak performansla ilgisi yoktur. Mergesort, O (n * log n) ile çalışır ve kararlıdır. Heapsort benzer performans gösterir, ancak stabil değildir.
Mare Infinitus

2
"Kararlı", örneğin veri yapıları için de uygulanabilir. "kararlı yığın", aynı önceliğe sahip öğeleri sıraya alındıklarında aynı sırada bırakan yığınlardır. Bu, etkili yol bulma algoritmaları için çok önemlidir.
BlueRaja - Danny Pflughoeft,

1
O (nnn) karşılaştırmaları ve ayrıca hafızada O (1) olan sabit türler yoktur . Tek verimlilik ölçütü hız değildir. Yerinde istikrarlı bir şekilde sıralama yapamamanız gerçeği.
QuestionC

3
@QuestionC Görünüşe göre blok sıralama stabil ve bu sınırlara uyuyor.
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.