查詢演算法 二分法

2021-07-25 08:44:02 字數 1143 閱讀 6034

二分查詢演算法的基本思想:

一.首先確定該區間的中間元素位置:mid = (low + high)/2;

mid代表區間內中間元素的位置

low代表區間內最左邊元素的位置

high代表區間內最右邊元素的位置

二.將待查key元素值與中間元素mid的值(array[mid])比較,如果相等,則查詢成功,否則確定新的查詢區間。

如果array[mid]>key,則由表的有序性可知,array[mid]右側的值都大於key,所以等於key的元素如果存在,必然在array[mid]左邊的區間中,這時候high = mid- 1;

如果array[mid]如果array[mid]=key,則查詢成功。

三.如果當前區間查詢不存在,則繼續重複第一二步驟。

四.在查詢過程中,low逐步增加,high逐步減少,如果high

二分法時間複雜度

如果是無序的一組資料,只能用順序查詢時間複雜度o(n),當然我們也可以 先用排序演算法讓無序變為有序,不過排序的過程也是乙個損耗。

如果是有序的一組資料,我們可以直接使用二分查詢(也稱折半查詢),有序也是二分查詢的乙個基本前提。使用二分的話,假設有1000個數,最壞的情況是要查詢(log1000)/(log2)這麼多次,所以時間複雜度為o(logn)。

實現**:

void binary(int *array,int length,int key) else 

mid = (low + high)/2;

}if (array[mid] == key)

printf("沒找到!\n");

return;

}

int main(int argc, const char * argv) ;

binary(a,10,8);

printf("hello, world!\n");

return 0;

}

演算法 二分法查詢

1 2 二分法實驗 31 設a 0 n 1 是乙個已排好序的陣列.4請改寫二分搜尋演算法,使得當搜尋元素x不在陣列中時,5返回小於x的最大元素的位置i和大於x的最大元素位置j.6當搜尋元素在陣列中時,i和j相同,均為x在陣列中的位置.72 設有n個不同的整數排好序後存放於t 0 n 1 中,8若存在...

演算法 二分法查詢

免費 二分法查詢主要是為了快速查詢給定陣列內,期待值在陣列中的位置 下標 二分法查詢通過對整個陣列取中間值,判斷期待值所在的範圍並縮小範圍,每次查詢範圍折半,直到範圍的邊界重合,得出期待值的位置,如果找不到返回null 二分法有乙個先決條件是 陣列內元素必須是有序的 給定乙個包含1,3,5,7,8,...

演算法 二分法查詢

給定乙個排序陣列和乙個目標值,在陣列中找到目標值,並返回其索引。如果目標值不存在於陣列中,返回它將會被按順序插入的位置。如果該題目暴力解決的話需要 o n 的時間複雜度,但是如果二分的話則可以降低到 o logn 的時間複雜度 遍曆法for迴圈,時間複雜度o n var searchinsert f...