[問題] C 取相同最大值

看板C_and_CPP作者 (今天我NG了)時間14年前 (2010/03/22 19:44), 編輯推噓8(8012)
留言20則, 7人參與, 最新討論串1/4 (看更多)
問題很簡單 但就是不會~"~ 譬如說{1,4,5,3,5} 取最大值我會 但目的是要最大且相同的值 所以應該是5,5才對= = #include<stdio.h> int main(){ int arr[5]={1,4,5,3,5}; int max=0; int i; for(i=0;i<5;i++){ if(arr[i]>max) max=arr[i]; } printf("%d, ",max); } 請問用陣列去存我要的輸出結果5,5 要怎樣寫才可以啊Orz -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 120.107.164.245

03/22 19:46, , 1F
多一個count?
03/22 19:46, 1F

03/22 19:46, , 2F
第一次迴圈找到最大值, 第二次迴圈將與最大值相同的輸出
03/22 19:46, 2F

03/22 20:04, , 3F
如果數字都不大,可以再用一個陣列存數字出現數目??
03/22 20:04, 3F

03/22 20:21, , 4F
先sorting?
03/22 20:21, 4F

03/22 20:38, , 5F
阿 我說的是像counting sort那樣
03/22 20:38, 5F

03/22 20:54, , 6F
看來 d大的建議比較簡單...
03/22 20:54, 6F

03/22 21:42, , 7F
疑? 我好像有看錯問題吧XD
03/22 21:42, 7F

03/22 22:02, , 8F
謝謝二樓大大的點醒 終於有了T_T 也謝謝其他大大的幫忙:D
03/22 22:02, 8F

03/22 22:11, , 9F
d大的好像行吧?當大於max時,max設定為該值且count=1
03/22 22:11, 9F

03/22 22:12, , 10F
而若與max相等,則count++; 是這樣嗎??
03/22 22:12, 10F

03/22 22:24, , 11F
2樓的時間複雜度是n^2,先sort再找的話是nlogn
03/22 22:24, 11F

03/22 23:05, , 12F
請問為什麼2F的複雜度是n^2? 不是O(2*n) = O(n) 嗎?_?
03/22 23:05, 12F

03/22 23:18, , 13F
2個迴圈應該是指內跟外迴圈吧?
03/22 23:18, 13F

03/22 23:21, , 14F
我想是非巢狀, 兩個前後分開跑的迴圈; 第一個找到最大值
03/22 23:21, 14F

03/22 23:22, , 15F
第二個計數array裡和最大值相同的就夠了....
03/22 23:22, 15F

03/22 23:22, , 16F
當然也可以在找最大值的同時就計數, 這樣就不用第二個迴
03/22 23:22, 16F

03/22 23:23, , 17F
圈, 基本上應該也同樣是O(N)的....
03/22 23:23, 17F

03/22 23:26, , 18F
假設最大的數有1個,次大的有2個,分開的迴圈怎麼找?
03/22 23:26, 18F

03/22 23:28, , 19F
似乎誤會題目了...以為是必須有重複的最大值...
03/22 23:28, 19F

03/23 08:26, , 20F
最大的數有一個時,就只要輸出一個最大值即可
03/23 08:26, 20F
文章代碼(AID): #1BfrWQIm (C_and_CPP)
文章代碼(AID): #1BfrWQIm (C_and_CPP)