問題描述
設計乙個時間的演算法,找出由n個數組成的最長單調遞增子串行。
演算法描述
演算法實現
#includestruct演算法複雜度分析(時間、空間)1.分析程式中迴圈巢狀最多語句:date
;void ascorder(struct date *a,int
n) }
}//輸出最長單調遞增子串行
//找到最長單調遞增子串行開始的單元
int max=0
;
intfore;
for(int i=0;i)
if(a[i].order>max)
//依次輸出序列中的單元
for(int i=0;i)
if((a[i].order==max)&&(a[i].num>=fore))
}int
main()
;
//自定義陣列
int n=15
; ascorder(a,n);
//求解最長單調遞增子串行演算法
return0;
}
for(int i=n-1;i>=0;i--)
for(int j=i+1;j易得程式的時間複雜度為。
2.空間複雜度為。程式執行過程中開闢了乙個大小為n的自定義陣列(相當於兩個大小為n的整型陣列)、定義了若干整型變數且無遞迴呼叫,故空間複雜度為。
最長單調遞增子串行
單調子串行包含有單調遞增子串行和遞減子串行,不失一般性,這裡只討論單調遞增子串行。首先,從定義上明確我們的問題。給定序列a1,a2,an,如果存在滿足下列條件的子串行 ai1 ai2 aim,其中i1即稱為乙個原序列的長度為m的單調遞增子串行,那麼,現在的問題是我們要找出乙個序列的最長的單調遞增子串...
最長單調遞增子串行
設計乙個o n2 時間的演算法,找出由n個數組成的序列的最長單調遞增子串行。輸入 第1個整數n 0分析 用陣列b 0 i 記錄以a i 0 i a k 並且 b k max b j 1 j i 1 所以 b i b k 1.如果存在k b k b k 並且 a i a k 即 b i 不是滿足條件的...
最長單調遞增子串行問題
設計乙個o n2 複雜度的演算法,找出由n個數組成的序列的最長單調遞增子串行。public class lis 儲存資料 int b new int a.length 儲存每個元素的最長單調遞增子串行 int ab new int a.length a.length 儲存每個元素的單調遞增子串行值 ...