Mempertimbangkan pseudo-code dari bubblesort ini:
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
Apa ide dasar yang harus saya ingat untuk mengevaluasi kompleksitas waktu rata-rata? Saya sudah berhasil menghitung kasus-kasus terburuk dan terbaik, tetapi saya terjebak membahas bagaimana mengevaluasi kompleksitas rata-rata lingkaran dalam, untuk membentuk persamaan.
Persamaan kasus terburuk adalah:
di mana sigma dalam mewakili loop dalam, dan sigma luar mewakili loop luar. Saya berpikir bahwa saya perlu mengubah kedua sigma karena klausa "jika-kemudian-pecah", yang mungkin mempengaruhi sigma luar tetapi juga karena klausa if-dalam loop batin, yang akan mempengaruhi tindakan yang dilakukan selama loop (Perbandingan 4 tindakan + 1 jika benar, atau hanya 1 perbandingan).
Untuk klarifikasi pada istilah rata-rata waktu: Algoritma pengurutan ini akan membutuhkan waktu yang berbeda pada daftar yang berbeda (dengan panjang yang sama), karena algoritma ini mungkin memerlukan langkah-langkah lebih kurang melalui / di dalam loop sampai daftar benar-benar dalam urutan. Saya mencoba untuk menemukan matematika (cara non statistik) untuk mengevaluasi rata-rata putaran yang dibutuhkan.
Untuk ini saya berharap urutan apapun dari kemungkinan yang sama.