Pivot olarak maksimum bir öğe seçerseniz Quicksort'un daima ikinci dereceden çalışma zamanı var mı?


9

Hızlı sıralama algoritmanız varsa ve her zaman pivot olarak en küçük (veya en büyük) öğeyi seçerseniz; Zaten sıralanmış bir veri kümesi sağlarsanız, 'zaten sıralanmış' listenizin artan veya azalan sırada olup olmadığına bakılmaksızın her zaman en kötü performans elde edeceğinizi varsayar mıyım?

Benim düşüncem şu ki, pivotunuz için her zaman en küçük elemanı seçerseniz, 'zaten sıralanmış' girdinizin artan veya azalan olarak sıralanıp sıralanmasının önemi yoktur çünkü pivotunuza göre sıralanmak üzere seçilen altküme her zaman aynı boyutta?


2
Düşünceleriniz doğru, ancak doğrudan tartışabilir ve bu durumda quicksort'un çalışma süresini hesaplayabilirsiniz - Ö(n2).
Yuval Filmus

Yanıtlar:


15

Hızlı sıralama için en kötü durum karmaşıklığı Θ(n2). Bu, bir grubun yalnızca tek bir üyesi olacak şekilde seti ayıran pivotlar toplayarak elde edilir. Kötü bir pivot toplama algoritması ile, bu, sıralanmış bir kümenin bir ucunu seçerek kolayca elde edilebilir. Varsayımınız doğru.


2
Bunu yazmak daha iyiydi: "... Bu, bir grubun sadece O (1) üyesi olacak şekilde bölen pivotları toplayarak elde edilir"

@Saeed Amiri: Doğru, ama kesin olmak daha iyi.
MMS

1
@SaeedAmiri: O (1), 1 ile orantılı olduğunu gösterir, bu da k * 1 olabileceği anlamına gelir. En kötü durum tam olarak 1 olduğunda elde edilir. Size O (1) 'in O (n ^ 2)' ye yol açabileceğini söyleyeceğim.
walrii

@MMS, ben yazdım Ö(1) Kesin olmak gerekirse, walrii yazdınız: "Hızlı sıralama için en kötü durum karmaşıklığı Θ(n2) .. ", ancak aslında elde etmenin tek yolu Θ(n2) Söylediğin gibi değil, evet senin tarif ettiğin yol en kötü durum, ama sadece Θ(n2).

5

Evet! Kesinlikle doğru olduğunu düşünüyorsun! Ve Yuval Filmus tarafından doğru olarak belirtildiği gibi, çalışma süresi Θ(n2)


3

Bir alt dizi, 0 veya 1 öteki ise (n-1)elementler; bu yüzdenÖ(n2):

t(n)=t(n-1)+t(0)+Ö(n)=Ö(n2)
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.