bubblesort의이 의사 코드를 고려하면 :
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
평균 시간 복잡성을 평가하기 위해 명심해야 할 기본 아이디어는 무엇입니까? 나는 최악의 경우와 최상의 경우를 이미 계산했지만 내부 루프의 평균 복잡성을 평가하여 방정식을 만드는 방법을 고심하고 있습니다.
최악의 방정식은 다음과 같습니다.
여기서 내부 시그마는 내부 루프를 나타내고 외부 시그마는 외부 루프를 나타낸다. 외부 시그마에 영향을 줄 수있는 "if-then-break"절로 인해 두 시그마를 모두 변경해야한다고 생각합니다. 또한 내부 루프의 if- 구문으로 인해 루프 중에 수행되는 동작에 영향을 미칩니다. (만약 4 개의 행동 + 1이면 비교, 그렇지 않으면 1 개의 비교).
평균 시간이라는 용어를 명확히하기 위해 :이 정렬 알고리즘은 목록이 완전히 정렬 될 때까지 루프 내에서 루프 내에서 더 많거나 적은 단계를 거쳐야 할 수도 있으므로이 목록 알고리즘은 동일한 목록의 다른 목록에서 다른 시간이 필요합니다. 필요한 라운드의 평균을 평가하는 수학적 (비 통계적 방법)을 찾으려고합니다.
이를 위해 모든 주문은 동일한 가능성을 기대합니다.