分治法查詢陣列最大最小值

2021-05-23 21:23:48 字數 349 閱讀 2652

大致說明下程式流程,呼叫find函式後,將判斷是否為最小子結構,如果不是則將它2分繼續判斷,如果是最小子結構,則把最小子結構的元素與全域性最大最小值做比較.

這裡假設資料元素個數為8時,該程式走的流程應該是

0-7分解為0-3->

0-3分解為0-1滿足最小子結構做完比較後return->

繼續0-3分解的2-3滿足最小子結構做完比較後return->

繼續0-7分解的4-7->

4-7分解為4-5滿足最小子結構做完比較後return->

繼續4-7分解的6-7滿足滿足最小子結構做完比較後return,此時後面沒有操作可做將一直return出第一次呼叫find的位置,分治到處結束.

分治法求陣列最大最小值

常規的做法是遍歷一次,分別求出最大值和最小值,但我這裡要說的是分治法 divide and couquer 將陣列分成左右兩部分,先求出左半部份的最大值和最小值,再求出右半部份的最大值和最小值,然後綜合起來求總體的最大值及最小值。這是個遞迴過程,對於劃分後的左右兩部分,同樣重複這個過程,直到劃分區間...

分治法實現尋找陣列最大最小值

我們拿到乙個長度為k的一維陣列,想要在短時間內進行最大最小值的查詢,第一種想法就是現將陣列進行排序,這樣首末的元素分別是最小和最大的元素。排序演算法中,快速排序 歸併排序 堆排序等排序演算法的時間複雜度都是o nlogn 第二種想法就是建立堆,但是需要分別建立最小值堆和最大值堆,我們可以採取第三種做...

C 分治法求最大最小值

可以用分治法解決的問題一定包含了諸多的子問題,這些子問題的解題方式及問題形式都與大問題一樣,並且都是可解的。所以我們利用分治法解決問題一定要先找他的最小的子問題,然後解決它,由於分治法的本質其實就是遞迴問題,所以我們最終可以解決原有問題。下面給出乙個陣列,求出其中的最大值和最小值。include u...