Bir bubblesort'un bu sahte kodunu göz önünde bulundurarak:
FOR i := 0 TO arraylength(list) STEP 1
switched := false
FOR j := 0 TO arraylength(list)-(i+1) STEP 1
IF list[j] > list[j + 1] THEN
switch(list,j,j+1)
switched := true
ENDIF
NEXT
IF switched = false THEN
break
ENDIF
NEXT
Ortalama zaman karmaşıklığını değerlendirmek için aklımda tutmam gereken temel fikirler neler olurdu? Zaten en kötü ve en iyi durumları hesaplamayı başardım, ancak denklemi oluşturmak için iç döngünün ortalama karmaşıklığını nasıl değerlendireceğimi tartıştım.
En kötü durum denklemi:
burada iç sigma iç halkayı temsil eder ve dış sigma dış halkayı temsil eder. Ben dış sigma etkileyebilir "if-then-break" -cuse nedeniyle hem de bir döngü sırasında yapılan eylemleri etkileyecek iç döngü if-yan tümce nedeniyle her iki sigma değiştirmek gerektiğini düşünüyorum (Doğru ise 4 eylem + 1 karşılaştırma, yalnızca 1 karşılaştırma).
Ortalama süre terimi hakkında açıklama için: Bu sıralama algoritması, farklı listelerde (aynı uzunlukta) farklı zamana ihtiyaç duyacaktır, çünkü algoritma, liste tamamen sıralanana kadar döngüler içinde / içinde daha fazla veya daha az adım gerektirebilir. İhtiyaç duyulan turların ortalamasını değerlendirmenin matematiksel (istatistiksel olmayan bir yolunu) bulmaya çalışıyorum.
Bunun için herhangi bir emrin aynı olasılıkta olmasını bekliyorum.