矩陣上的二分查詢

2021-06-18 08:12:17 字數 742 閱讀 9213

今天做了一道題,矩陣上的二分查詢,居然做錯了。是考慮簡單了。一維上的演算法擴充套件到二維的時候,需要仔細分析矩陣中的資料的相互聯絡,然後調整演算法。

前些時候,樹狀陣列那篇部落格。在擴充套件到二維後,求子矩陣的區間和,就沒有考慮清楚誰減去誰。這次二分查詢擴充套件到二維後,也沒有考慮清楚比arr[x][y]大的資料元素都可能在哪些區域。

下面是**,還可以優化,有些空間重複搜尋了。

#includeusing namespace std;

int arr[110][110];

struct position;

position * search(int sea,int m,int n,int p,int q)

int x,y;

y=(p+m)/2;

x=(q+n)/2;

if(arr[y][x]==sea)

if(arr[y][x]>sea)

if(arr[y][x]x >= 0)

return ans;

return search(sea,m,n,y+1,q); //search(sea,m,x,y+1,q);就應該和 search(sea,m,n,p,x+1); 沒有重複的了 }

}int main()

} position * ans;

int s;

while(scanf("%d",&s)==1){

ans=search(s,10,10,0,0);

cout

有序表上的二分查詢

基本思想 在乙個查詢區間中,確定出查詢區間的中心位置,用待查詢資料元素的關鍵字和中心位置上資料元素的關鍵字比較,若兩者相等則查詢成功 否則若前者小於後者,則把區間定為原查詢區間的前半段,繼續這樣的過程 否則若前者大於後者,則把查詢的區間定為原查詢區間的後半段,繼續這樣的過程.這樣的查詢過程一直進行到...

迭代二分查詢二分查詢

在寫這篇文章之前,已經寫過了幾篇關於改迭代二分查詢主題的文章,想要了解的朋友可以去翻一下之前的文章 bentley在他的著作 writing correct programs 中寫道,90 的計算機專家不能在2小時內寫出完整確正的二分搜尋演算法。難怪有人說,二分查詢道理單簡,甚至小學生都能明確。不過...

二分查詢的平均查詢長度 二分查詢

資料的查詢在計算機的操作中非常常見,那麼我們應該怎樣在計算機中實現查詢操作呢?最簡單的一種方法 傻找 也就是乙個乙個的找,我們把陣列中的每個元素都和我們想要查詢的目標元素進行比對,看一下列表中是否有和這個元素相同的元素,如果我們想要尋找的那個目標元素在列表 現了,那麼就宣告查詢成功,這種演算法寫成 ...