分治法例項 快速冪

2021-08-15 15:55:42 字數 510 閱讀 6910

快速冪:

即快速求冪a^b,這裡提供兩種實現方法:

①位運算非遞迴實現法

即將冪次b寫成二進位制的形式(事實上,計算機中就是以二進位制儲存數字的),

若b的某個二進位制位為1,res乘上當前的base,同時base變成base²;若為0,則僅僅base變為base²。

②遞迴實現法

這種方法貌似更好理解一些,

若b為偶數,則a^b = [a^(b/2)]^2;若b為偶數,則a^b = a * [a^(b/2)]^2。

#include using namespace std;

//位運算版本(更高效)

int quickpow(int a, int b)

return res;

}/*遞迴版本

int quickpow(int a, int b)

*/int main()

快速冪 分治

快速冪 x n y n z n 我們在編寫程式中常常會碰到求解a p 的情況,這時候如果只是簡單的遍歷一遍會浪費很多時間,這時候我們就需要快速冪了。其實快速冪的操作非常簡單,比如我們要求a p,我們只需求 a p 2 再平方就行了,如果p為奇數,那我們只需在乘乙個p即可。在此主要介紹一種用位運算處理...

分治法 快速排序

演算法的思想 將大的問題化為小問題 問題性質不變 快速排序是在比較排序中相對較快,所以稱為快速排序。對於乙個陣列a n 快速排序中分界值需要取n次也就是說,每乙個下標對應的值都需要取一次。源 如下 include using namespace std template int partition ...

快速排序,分治法

平均時間複雜度是 o nlogn 在傳入的陣列為倒序時,將出現最壞的情況,時間複雜度為o n 2 private static void myquicksort int arr,int start,int end int divideindex divide arr,start,end 分治法,按d...