首先考慮采用順序搜索的方法,逐個(gè)比較A[0:n-1]里的元素,直至找出頂峰元素A[i]或等到搜索完整個(gè)數(shù)組后判定A[i]不在其中。這種方法沒有很好地利用n個(gè)元素每個(gè)元素值都不同且具有單峰性這個(gè)條件,且在最壞的情形下,采用順序搜索的方法需要O(n)次比較。
因?yàn)轫樞蛩阉鞣椒o法滿足要求,故考慮到采用二分搜索法。二分搜索法的基本思想是把n個(gè)元素分成個(gè)數(shù)大致相同的兩部分,如果數(shù)組A的左半部分為單調(diào)遞增數(shù)列,同時(shí)A[n/2]大于右半部的第一個(gè)數(shù),則找到數(shù)組A的頂峰元素,算法終止;如果數(shù)組A的左半部分為單調(diào)遞增數(shù)列,同時(shí)A[n/2]小于右半部分的第一個(gè)數(shù)則在右半部分繼續(xù)搜索數(shù)組最大值;如果數(shù)組A的右半部分為單調(diào)遞減數(shù)列,同時(shí)A[n/2]小于左半部分的最后一個(gè)數(shù)則在左半部分繼續(xù)搜索數(shù)組的頂峰元素。