經典演算法學習 二分查詢

2021-07-16 06:19:11 字數 626 閱讀 5927

在所有的查詢演算法中,二分查詢是最簡單一種。二分查詢要求原先的序列是已經排序的,每次都是以序列中間的數字作為比較,如果小於中間的數字,那麼就在序列左邊繼續遞迴查詢;如果大於中間的數字,那麼就在序列右邊繼續遞迴查詢。直到找到該數字,或者直到序列中只有乙個數字的時候都還沒找到,則查詢失敗。查詢的時間複雜度可以達到o(logn),應該說是除了陣列按下標查詢o(1)以外的最快的查詢方式了。示例**上傳至  。

使用c語言完整實現如下:

// 實現二分查詢

#include #include void binarysearch(int *arr, int start, int end, int num);

int main(int argc, const char * argv)

; binarysearch(array, 0, 5, 99);

return 0;

}void binarysearch(int *arr, int start, int end, int num)

if (start == end)

if (num < arr[mid])

if (num > arr[mid])

return ;

}

演算法學習之路 二分查詢

描述 給定乙個單調遞增的整數序列,問某個整數是否在序列中。輸入 第一行為乙個整數n,表示序列中整數的個數 第二行為n n不超過10000 個整數 第三行為乙個整數m m不超過50000 表示查詢的個數 接下來m行每行乙個整數k。輸出 每個查詢的輸出佔一行,如果k在序列中,輸出yes,否則輸出no。輸...

二分查詢演算法學習札記

二分查詢演算法學習札記 說明blog 二分查詢演算法基本思想 二分查詢演算法的前置條件是,乙個已經排序好的序列 在本篇文章中為了說明問題的方便,假設這個序列是公升序排列的 這樣在查詢所要查詢的元素時,首先與序列中間的元素進行比較,如果大於這個元素,就在當前序列的後半部分繼續查詢,如果小於這個元素,就...

演算法學習 1 二分查詢

先從乙個問題思考,假設我們現在查詢英語字典裡的一k為開頭的單詞。如果我們從頭開始翻,一直翻到k,那樣太浪費時間了。通常我們都會直接翻開字典中間開啟位置看看是什麼字母的,如果我們翻到了j,k在j後面,那麼我們繼續往後翻就到了,比從頭開始翻快多了。二分查詢是一種演算法,其輸入是乙個有序的元素列表 必須有...