アルゴリズムの時間の複雑さを解消することに問題があります。実行時間の分析、Big O
たとえば、リストをソートする次のHaskellコード。
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)
だからNリストの長さとt_isSorted(N)を実行して、時間関数に:定数T_DROP(N)= CとT_ALL(n)はある= N、t_zipWith(N)= N :
t_checkについてはt_isSorted(n)= c + n +n
:
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
そして、どのように正確I(n)はt_sortを取得するために、これらを組み合わせなければならないのですか?私は最悪の場合、ソートxsはn-1回実行しなければならないと思います。
なぜdownvoteですか? –