遞迴查詢乙個序列的最大最小值

2021-08-16 07:22:29 字數 551 閱讀 6459

這個問題在群裡看到的,提問的人伐已經有偽**了,但是他沒理解,以及不知道怎麼用c的**去編寫(他的複試只能使用c)

看了一下偽**,這個問題的解法是這樣:(有點類似於快排)

把序列分成兩塊(二分),比較兩塊區間中的最大最小值,這裡就開始遞迴呼叫得到每個區間的最大最小值。

其中:

當區間劃分直至只有乙個元素,當前區間最大最小值就是那個元素。

當區間劃分有兩個元素,則比較那兩個元素,得到當前區間的最大最小值。

所以呢,我們要編寫的**,需要保留這樣的幾個引數,max,min,區間起始位置,序列,而且還要保證遞迴後,傳入的引數是可以被改變的,一般來說,c++的話,直接使用引用就可以了,用c,我們就要使用指標,涉及指標,就要考慮空指標問題之類的,所以我這樣寫了改演算法。

void maxmin(int i, int j, int **max, int **min, int *a)

if (i == j)

else

if (j == i + 1)

else

}

同時尋找序列的最大最小值

問題描述 給定乙個長度為n n 2 的無序正整數序列ary,要求同時找到其中最大和最小值元素,並返回其和。分析 將最大值max和最小值min看成一對 mix,min 每次從序列中成對地取出兩個元素,將其中較小者與min比較並更新,將其中較大者與max必將並更新,這樣處理每一對元素只需要3次比較,整個...

分組查詢最大 最小值sql

經典題目 查詢每個班級的最高分,查詢每種日誌的最晚記錄 1.查詢每個班級的最高分 不考慮同一分數的 思路 首先利用max group by取出每組最高的分數,再與表自連線 sql語句 select t1.id,t1.name,t1.calssid,t2.score from t zhb t1 sel...

分組查詢最大 最小值sql

經典題目 查詢每個班級的最高分,查詢每種日誌的最晚記錄 1.查詢每個班級的最高分 不考慮同一分數的 sql語句 select id,name,calssid,max score from select from t zhb order by score desc a group by calssid...