102 專利商標 資料結構問題 - 考試

Table of Contents

Q1.請使用C或JAVA語言,寫一遞迴副程式,此副程式的輸入為一個未排序的且長度為n的整

數陣列A[0:n-1],副程式將在此整數陣列中,以遞迴的方式群找此整數陣列中的最大值

,並回傳此最大值。

Q2.請分析此副程式的時間複雜度以order的方式表示。


A1:
Int Max(int k , int a[i])
{
int max=a[k]
if (a[k]>a[i]) than return Max(k,k-1)
else return Max(k-1 , k-1)
}

不好意思,我的想法比較粗糙,我的想法是預設A[n]作為MAX,在每一回合一一往前(

陣列index較小的方向)比較,當max>a[i]時,下一回合就在跟a[i-1]比;同理,若

max<a[i-1],則max等於a[i-1],再繼續往前比較

請問版上前輩,我的想法有哪裡錯誤?另外程式方面我可以怎樣描述才比較完整?


A2:
因為我是循序去找陣列的最大值,所以最差會是O(N)嗎?order的方式表示是指甚麼意思?


還請版上前輩指教...謝謝

--

All Comments

Eden avatarEden2015-04-23
你的參數有寫錯嗎?一個是a[i]一個是常數
Olga avatarOlga2015-04-28
感覺少了些參數,而且陣列應該是丟a[]不是丟a[i]吧
Selena avatarSelena2015-04-29
你的想法是比較完後遞迴,應該還要再加個目前陣列大小的
Liam avatarLiam2015-05-02
參數,可是這樣做起來的感覺就跟比較完後For loop一樣..
Frederic avatarFrederic2015-05-04
不太像遞迴的遞迴...
Olivia avatarOlivia2015-05-07
第二個應該是請你用排序好的串列去解釋他的時間複雜度
Joseph avatarJoseph2015-05-09
複雜度是O(N)沒錯,因為每一項都會比較過
Edith avatarEdith2015-05-12
喔~有點錯誤~是根據你的程式寫怎樣複雜度才會怎樣,不完
Harry avatarHarry2015-05-12
全是O(n),其他有待高手補充@@
Ursula avatarUrsula2015-05-14
我覺得邏輯很像不正確
Doris avatarDoris2015-05-18
終止條件也寫錯這個答案是無窮迴圈
Elizabeth avatarElizabeth2015-05-20
邏輯完全錯誤,order就是循序