二分搜尋 續

2022-04-03 22:30:22 字數 575 閱讀 9491

上一節 末尾提到了乙個問題,在順序陣列中找到t值第一次出現的位置。

其實這也是一種二分搜尋的變形。

思路如下:我仍然使用l和u作為陣列的邊界值,t就包含在l和u指示的陣列範圍中。但不變關係式變為x[l]=0,x[-1]=t(程式中並沒有這兩個元素)。二分搜尋的**如下

1

int binarysearch(int a,int n,int t)//

n為a陣列的長度,t為尋找的元素28

9int low=-1;10

int high=n;

11int

middle;

12while(low+1!=high)

1319

else

//此時的條件改為a[middle]>=t而不是原先的程式需要比較兩次

202324}

25if(high>=n||a[high]!=t)

2629

else

3033 }

此程式的好處是在while迴圈中只需要將陣列a中的值與t值比較一次,而不是前文中的兩次。有時候看似很細微的差別就可以對效能造成舉足輕重的影響。

二分搜尋的總結 續

前面已經有介紹二分搜尋的了,這裡再次貼出乙個 這是 程式設計珠璣 第九章,對二分搜尋的最後的優化。還和前面一樣,分成三個子程式,第乙個函式binarysearch是典型的二分搜尋,只不過把三次比較換成了兩次,第二個函式binarysearchge是返回搜尋值target的最左邊的乙個,如果不存在,就...

Java 二分搜尋 二分查詢

對陣列元素進行逐個查詢顯然是費時費力的工作,我們可以使用一些方法快速地搜尋出陣列中元素的指定位置.接下來我們介紹一種方法 二分搜尋法 二分搜尋法充分利用了元素間的次序關係.基本思想 將n元素分成個數大致相同的涼拌,取arr n 2 與欲查詢的x做比較,如果 下面將採用兩種方式 遞迴 非遞迴 來展示二...

二分(二分答案 二分搜尋)與單調性

經典二分搜尋是二分空間範圍。二分答案又叫二分猜值,是二分解的值空間。其實可以統一,普通的二分搜尋也是二分答案值域 下標空間,也是猜值。二分必須滿足單調性,最直觀的,二分搜尋只能在有序陣列上進行。單調性體現在,下標和元素值是單調的,也就是 if j i 有 a j a i 一般二分答案解決的問題是最優...