Ich habe Probleme mit der Analyse der Zeit Komplexität eines Algorithmus.Analysieren Laufzeit, Big O
Zum Beispiel der folgende Haskell-Code, der eine Liste sortiert.
sort xs
|isSorted xs= xs
|otherwise= sort (check xs)
where
isSorted xs=all (==True) (zipWith (<=) xs (drop 1 xs))
check [] =[]
check [x]=[x]
check (x:y:xs)
|x<=y = x:check (y:xs)
|otherwise=y:check (x:xs)
So für n die Länge der Liste und t_isSorted (n), um die Laufzeitfunktion ist: es gibt eine konstante T_DROP (n) = c und t_all (n) = n, t_zipWith (n) = n :
t_isSorted(n)= c + n +n
Für T_CHECK:
t_check(1)=c1
t_check(n)=c2 + t_check(n-1), c2= for comparing and changing an element
.
.
.
t_check(n)=i*c2 + tcheck_(n-i), with i=n-1
=(n-1)*c2 + t_check(1)
=n*c2 - c2 + c1
Und wie genau muss ich denen erhalten t_sort (n) kombinieren? Ich denke, im schlimmsten Fall muss sort xs n-1 mal laufen.
Warum der Downvote? –