分治法 二分查詢

2022-07-12 19:33:16 字數 806 閱讀 7757

分治

分治法是將乙個規模為n的問題分解為k個規模較小的子問題。注意:這裡的子問題一定是相互獨立且與原問題相同。用遞迴的方法解這些子問題。然後將各子問題的解合併到原問題的解。

二分查詢演算法是運用分治的典型例子

分治-二分查詢

給定已按公升序排好序的n個元素a[0:n-1],現要在這n個元素中找出一特定元素x。

分析據此容易設計出二分搜尋演算法:

在 a[0] <= a[1] <= ... <= a[n-1] 中搜尋 x, 找到x時返回其在陣列中的位置,否則返回-1

int binarysearch(int a, int x, int n)

return -1; // 未找到x

}例如:

#includeusing

namespace

std;

#include

int bifind(int a,int x,int n)//

二分查詢

return -1;}

intmain()

cout

=0;j--)

for(i=0;i)

}for(i=0;i<20;i++)

cout

<'';

cout

) cout

<<"

未查找到:

"

}

分治法 二分查詢

1 首先二分查詢滿足分治法的四個條件 1 原問題的解可以通過分解為若干個小的問題來解決 將原陣列序列可分解為兩個子串行 2 小的問題的解決方法和原問題的解決方法大致相似 都是確定乙個序列的上界和下界然後求得mid進行比較 3 小問題的解可以通過合併從而得到原問題的解 在子串行中可以更容易得到解從而r...

分治法 二分查詢

問題描述 二分查詢又稱為折半查詢,它要求待查詢的資料元素必須是按關鍵字大小有序排列的。問題描述 給定已排好序的n個元素s1,sn,現要在這n個元素中找出一特定元素x。首先較容易想到使用順序查詢方法,逐個比較s1,sn,直至找出元素x或搜尋遍整個序列後確定x不在其中。顯然,該方法沒有很好地利用n個元素...

分治法 二分查詢

問題 給定已按公升序排好序的n個元素a 0 n 1 現要在這n個元素中找出一特定元素x,返回其 首次 出現的位置。雖說是老問題,但是並不可簡單忽視,網上有人說 十個二分九個錯 還是要好好梳理一下。問題一,區間開閉 設查詢區間左右端點為left與right,這兩個點其實開閉均可,一般統一用閉合。問題二...