O(logn*2^logn)和O(n*logn)算法
生活随笔
收集整理的這篇文章主要介紹了
O(logn*2^logn)和O(n*logn)算法
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
1.
for(int i = 1;i < n; i <<=1)for(int j = 0; j < i; j++)這個嵌套循環:1+2+4+…+2^[log(n-1)]=2^[logn]-1=O(n);
2.
for(int i = 0; i < = n; i ++){for(int j = 1; j < i; j+=j) ...}為O(logn*2^logn)。
3.
現在又遇到了大O界O(n*logn)
我們知道log1+log2+log3+…+logn的確界為n*logn,現在看看這個大O界:
分析如下:
O(nlogn)的算法關鍵是它建立了一個數組c[],c[i]表示長度為i的不下降序列中結尾元素的最小值,用K表示數組目前的長度,算法完成后K的值即為最長不下降子序列的長度。
具體點來講:
設當前的以求出的長度為K,則判斷a[i]和c[k]:
3.1.如果a[i]>=c[k],即a[i]大于長度為K的序列中的最后一個元素,這樣就可以使序列的長度增加1,即K=K+1,然后現在的c[k]=a[i];
總結
以上是生活随笔為你收集整理的O(logn*2^logn)和O(n*logn)算法的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python pyecharts
- 下一篇: 优先队列的一种实现