分治複雜度計算

2021-09-25 12:57:28 字數 521 閱讀 4888

分治降低時間複雜度:

1.二分法查詢:

t(n)=2*t(n/2)+a*n

=4*t(n/4)+2*a*n/2+a*n

=n*log(n)

故.分治可以將乙個o(n^2)問題變成乙個o(n*log(n))的問題

2.輸出前m大的數

引入操作arrangeright(k):把陣列前k大的都弄到最右邊

1.設key=a[0],將key挪到適當位置,使得比key小的元素都在key左邊,比key大的元素都在k右邊

2.選擇陣列的前部或後部在進行arrangeright操作

a=k done;

a>k 對右邊個元素再進行arrangeright(k),沒必要在對左邊做

at(n)=t(n/2)+a*n

=t(n/4)+a*n/2+a*n

=t(n/8)+a*n/4+a*n/2+a*n

=t(1)+...+a*n/8+a*n/4+a*n/2+a*n<2*a*n

即o(n)

2019.7.24

複雜度計算

在1 n 中,能被 2整除的有 n 2個,能被 3整除的有 n 3個,則該演算法的複雜度可這樣計算 o n n 2 1 n 3 2 n 5 3 n 7 4 即o n n n 考慮到6這個數,它既是2的倍數,也是3倍數,因此還要用到容斥原理。設能被第 i個素數整除的正整數的集合為ai。對於特定的乙個整...

計算複雜度

求極限 n 無窮大 表示式n 無窮大 表示式1 n 0 2n2 2n3 n n 3 2 n 2 1 n 2 n 無窮大的時候 2 n 0 1 n 2 0 2 常數 此演算法的時間複雜度是n 3 時間複雜度的概念 執行的次數和同數量級 n最高次方數 取商是常數 那麼同數量級就是這個演算法的時間複雜度 ...

計算時間複雜度與空間複雜度

如何衡量乙個演算法的好壞?複雜度 空間複雜度 時間複雜度 事後統計法 就是在演算法的程式執行結束後,根據實際執行結果衡量演算法好壞 事前估計法 就是在程式執行之前,先按照程式 來預估演算法的好壞 時間複雜度 用基本指令的執行次數而不是執行時間代表時間複雜度,同乙個程式在不同配置的機器下的執行時間不一...