演算法 試題剖析1

2021-07-25 12:02:10 字數 598 閱讀 8535

分析下方**時間複雜度 【**的排程次數】

n = 10;

for(i = 1;i

< n; i++)

for(j=1;j

j+=n/2)

for(k=1; k2*k)

x+=1;

看這個**可知,x+=1;是迴圈最內側**,其時間複雜度最高,所以求這句**的複雜度就可以。

從內到外看。

k迴圈從1 == 2的n次方每次開始是2的倍數,一直到》n-1;所以這層迴圈的執行次數是 log(n) 次。時間複雜度o(log(n)) //[log 預設底數為2]

j迴圈從1開始遞增n/2次。一直到n-1;第一次遞增之後j 變成(n+2)/2 .

第二次遞增則是j=n+1,so.迴圈了兩次。但是時間複雜度還是o(1) //因為常數的時間複雜度都是o(1)

i 迴圈從1開始每次增加1 一直到n-1 。所以迴圈體執行n-1次。時間複雜度為o(n)、 最後相乘得到的總時間複雜度就是o(n*1*log(n)); //強調一下。時間複雜度都不帶常數項或者常熟係數的。所以不存在所謂的 o(2n) 這樣的時間複雜度

@author yars丶xiaowei

演算法面試題(1)

1 最長不重複字串 如 abcabcd,第一步會先遇到重複字元a,則把起始的a刪除,再重b開始查不重複的字串,則為遇到重複,就去除最左端的字元 public static void main string args else max math.max max,set.size system.out....

Partition演算法剖析

對,我是來騙訪問量的!o o 二分partition演算法是我們最常使用的,尤其在快速排序中使用最為常見。常見的partition演算法有如下兩種實現思路 演算法思路 int partition vector nums,int begin,int end swap nums pos nums beg...

alibaba 研發 演算法筆試題1

1 7的二進位制補碼表示為 d a 0111 1000 b 0111 1001 c 1111 1000 d 1111 1001 答 數電題。解析 7的原碼是1 000 0111,反碼是1 111 1000,補碼是1 111 1001,故選d。知識補充 1 乙個數在計算機中的二進位制表示形式,叫做這個...