快速冪的兩種演算法

2021-07-30 20:57:18 字數 487 閱讀 5412

快速冪是一種在o(logn)的時間複雜度下求出冪的一種方法。

第一種算方法就是對於乙個x^n我們可以把n轉化成2進製的形式,如x^22 = x^16+x^4+x^2;因為22(二進位制:10110) = 16 + 4 + 2;

所以我們可以推到出來這種演算法,完整**如下:

typedef long

long ll;

ll mod_pow(ll x,ll n,ll mod)

return res;

}

還有一種演算法就是先判斷n是奇數還是偶數。如果是偶數滿足x^n = (x^2)^(n/2);,如果是奇數滿足x^n = (x^2)^(n/2)*x;則不斷向下遞迴即可,終止條件就是n == 0時返回 1;完整**如下:

typedef long

long ll;

ll mod_pow(ll x,ll n,ll mod)

快速排序的兩種演算法

假設我們現在對 6 1 2 7 9 3 4 5 10 8 這個10個數進行排序。先將第乙個數當成基準數,然後以i,j當成哨兵分別指向陣列的首尾,第一次讓j先移動,移動到比基準數小的數字時停下,然後讓i移動至比基準數大的數字停下,交換arr i 和arr j 一直遍歷,知道i和j兩個哨兵相遇停止,然後...

兩種快速排序

快排是一種基於交換的排序,氣泡排序 兩兩相鄰作比較,逆序則交換 也是基於交換的排序,快排運用了二分法的思想,每次找乙個哨兵,比哨兵小的放一邊,大的放一邊,這是完成了一趟快排。冒泡 for int i 0 ia j 1 快排一 void quicksort int left,int right if ...

php 快速排序演算法,PHP兩種快速排序演算法例項

雖然在php這樣的web應用開發中,我們不是太強調排序的重要性,因為php自身已經帶了例如sort 等這樣強大的排序函式,但是在一些重要的場合,例如某些高併發的場合,我想排序演算法的影響已經不能忽略。所以在此介紹遞迴排序和迭代排序。遞迴法 遞迴法實現的快速排序 function quicksort ...