nlogn 最長不下降子串行

2021-06-25 16:00:03 字數 513 閱讀 3181

o(nlogn)的演算法關鍵是它建立了乙個陣列temp,temp[i]表示長度為i的不下降序列中結尾元素的最小值,用top表示陣列目前的長度,演算法完成後top的值即為最長不下降子串行的長度。

設當前的以求出的長度為top,則判斷num[i]和temp[top]:

1.如果num[i]>=temp[top],即num[i]大於長度為top的序列中的最後乙個元素,這樣就可以使序列的長度增加1,即top++,然後現在的temp[top]=num[i];

2.如果num[i]

#includeint num[1000],temp[1000]; 

int top;

int binary_search(int x)

} }//找到序列中不大於x的最大的數,正因為二分查詢才使得複雜度變身為n*log(n)

int main()

} printf("%d\n",top+1);

} return 0;

}

nlogn 最長不下降子串行

o nlogn 的演算法關鍵是它建立了乙個陣列temp,temp i 表示長度為i的不下降序列中結尾元素的最小值,用top表示陣列目前的長度,演算法完成後top的值即為最長不下降子串行的長度。設當前的以求出的長度為top,則判斷num i 和temp top 1.如果num i temp top 即...

最長不下降子串行nlogn演算法詳解

今天花了很長時間終於弄懂了這個演算法 畢竟找乙個好的講解真的太難了,所以勵志我要自己寫乙個好的講解qaq 這篇文章是在懂了這個問題n 2解決方案的基礎上學習。解決的問題 給定乙個序列,求最長不下降子串行的長度 nlogn的演算法沒法求出具體的序列是什麼 定義 a 1.n 為原始序列,d k 表示長度...

最長不下降子串行

a1 t0 an a an 1 2 b an c d n 1 求該序列最長不下降子串行長度 n不是很大顯然可以暴力。n很大呢?那就不斷減迴圈節長度直至減到乙個閾值內,再暴力。正確性顯然,只要閾值不要設太小。include include include define fo i,a,b for i a...