我得到了從 1 個(gè)元素到 100_000 個(gè)元素的不同長度的 int 數(shù)組。我需要找到給定 int 數(shù)組的近似中值。例如, given array of [4], median is 4 since there is only 1 element given array of [4,5], (4+5) / 2.0 = 4.5 is median. given array of [4,5,6], break array into 3 pieces [4][5][6] what is the middle value ? 5 = median. given array of [4,5,6,7], break array into 3 pieces [4][5,6][7] median of [4] is 4 median of [5,6] is 5.5 median of [7] is 7 4 vs 5.5 vs 7 median of given array [4,5,6,7] is 5.5使用給定的數(shù)組,我應(yīng)該將數(shù)組分成三部分(不創(chuàng)建新數(shù)組或修改給定數(shù)組)。將給定數(shù)組分成三部分,這是三種可能性 1. given array's length(6) % 3 = 0 (The case when a remainder is 0) given array --> [2,3,5,3,1,4] divide into 3 --> [2,3][5,3][1,4] each pieces are length of n/3. In this particular case(n = 6), 6/3 = 2 = length of each piece. 2. given array's length(10) % 3 = 1 (The case when a remainder is 1) given array --> [1,2,-20,-10,7,20,-3,100,6,92] divide into 3 --> [1,2,-20][-10,7,20,-3][100,6,92] left and right side piece is length of n/3(10/3). middle piece is n/3(10/3) rounded up 3. given array's length(8) % 3 = 2 (Last case when a remainder is 2) given array --> [1,2,10,7,20,-3,100,6] divide into 3 --> [1,2,10][7,20][-3,100,6]實(shí)現(xiàn)方法 public static double median3(int[] a) {}這是cs課程的作業(yè),旨在幫助學(xué)生練習(xí)遞歸。我感到困惑,因?yàn)槿绻乙褂眠f歸,我不太確定應(yīng)該從哪里開始。我可以進(jìn)行從課堂上學(xué)到的簡單遞歸,例如斐波那契數(shù)列或階乘數(shù)。但是這個(gè)問題,我似乎找不到我應(yīng)用于更簡單的遞歸問題的相同模式......如果你能給我一些指導(dǎo)并給我一些建議,我將不勝感激。謝謝你。
1 回答

MYYA
TA貢獻(xiàn)1868條經(jīng)驗(yàn) 獲得超4個(gè)贊
您可能要處理 3 種情況:
對于長度 = 1,您將元素作為該子數(shù)組的中位數(shù)
對于長度 = 2,您將中位數(shù)計(jì)算為這兩個(gè)元素的平均值
對于長度 >= 3,您根據(jù)上述規(guī)則拆分?jǐn)?shù)組,然后將相同的方法(即這 3 種情況)應(yīng)用于第二個(gè)(中心)數(shù)組。您不需要拆分?jǐn)?shù)組,只需跟蹤標(biāo)記第二個(gè)和第三個(gè)子數(shù)組的第一個(gè)元素的索引。
例子:
讓我們從數(shù)組開始[1,2,-20,-10,7,20,-3,100,6,92]
。它的長度 >= 3 所以你把它分成[1,2,-20][-10,7,20,-3][100,6,92]
,
現(xiàn)在您遞歸地處理中心數(shù)組[-10,7,20,-3]
。它的長度仍然 >3,所以你再次分裂并得到[-10[[7,20][-3]
.
“新”中心數(shù)組是[7,20]
,因?yàn)殚L度為 2,所以您將中位數(shù)計(jì)算為(7+20)/2.0 = 13.5
。
添加回答
舉報(bào)
0/150
提交
取消