c 實現二分法查詢

2021-07-12 03:54:06 字數 842 閱讀 7992

二分查詢也屬於順序表查詢範圍,二分查詢也稱為折半查詢。二分查詢(有序)的時間複雜度為o(logn)。

那麼什麼是二分查詢呢?二分查詢的基本思想是, 在有序表中,取中間記錄作為比較物件,若給定值與中間記錄的關鍵字相等,則查詢成功;若給定值小於中間記錄的關鍵字,則在中間記錄的左半區繼續查詢;若給定值大於中間記錄的關鍵字,則在中間記錄的右半區繼續查詢。不斷重複上述過程,直到找到為止。

從二分查詢的定義我們可以看出,使用二分查詢有兩個前提條件:

1,待查詢的列表必須有序,這裡使用遞迴快排來使產生的隨機無序陣列有序。

2,必須使用線性表的順序儲存結構來儲存資料。

下面是c++實現**。

//用遞迴快速排序對隨機產生的一組無序陣列進行排序,再查詢給定的數字,並返回下標,2016.5.27

#include #include #include #include #define max 101

void input(int num)//實參傳入的陣列的首位址,而不是整個陣列

}void output(int num)

}int partition( int num, int low, int high)

num[low] = num[0];

return low;//最後high和low在某乙個位置相遇,就是切分部的值。

}void qsort(int num, int low, int high)//對隨機產生的無序陣列進行快速排序,這也是二分法的缺陷之一。

}int binaryfind(int num, int x, int low, int high)

}void main()

C 二分法查詢,遞迴二分法

用二分法來求需要查詢的值.includeusing namespace std 查詢key元素是否存在 int findkey const int buf 100 const int ilen,const int key else right left mid 1 查詢失敗 return 1 查詢k...

python二分法查詢 Python 二分法查詢

二分法查詢主要的作用就是查詢元素 lst 1,3,5,7,12,36,68,79 資料集 百萬級資料 num int input 請輸入你要查詢的元素資訊 for el in lst if num el print 存在 break else print 不存在 len lst 0 1 2 3 4 ...

二分法查詢

前幾天csdn上說只有10 程式設計師能寫出正確的二分法查詢 so.我在看過二分法查詢方法後寫了乙個 一次測試成功.範圍 需要次數 10 4 100 7 1000 10 10000 14 100000 17 1000000 20 除了對特別小的陣列外,二分法查詢表現是非常優秀的.每次對範圍加倍可以建...