二分查詢(函式實現)
二分查詢函式
程式碼目的
在一個整形有序陣列中查詢某一個數
找到則列印數字所在下標 , 否則列印未找到.
程式碼思想:
一個有序陣列數字都是遞增向上的 , 所以如果要查詢一個數 , 逐個遍歷雖然也可以找到 , 但效率很低.
所以我們從一箇中間數查起 , 將中間數與待查詢的數字比較 ,如果待查詢數比中間數大說明待查詢數在中間數的右邊 ,左邊就可以被排除掉 . 多次迴圈下來就能找到該數字. 這樣可以加快查詢速度, 提高效率.
程式碼示例:
//二分查詢(函式實現)
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int BinarySearch(int arr[], int len, int toFind) {
int left = 0;//自定義子區間左值 即待查詢區間最左端
int right = len - 1;//自定義待查詢區間右值(注意最右端下標為陣列長度減一)
while (left <= right) {
int mid = (left + right) / 2;//定義中間值mid
if (toFind < arr[mid]) {//若中間值比待尋找的值大 證明待尋找的值在左側 則排除右側區間
right = mid - 1;//待查詢區間右端變為mid-1
}
else if (toFind > arr[mid]) {//若中間值比待尋找的值小 證明待尋找的值在右側 則排除左側區間
left = mid + 1;//待查詢區間左端變為mid+1
}
else {//若中間值與待尋找的值相比既不大也不小 則證明中間值就是待尋找的值
printf("找到了!\n%d的下標為 %d\n", toFind, mid);//列印下標
break;//找到了則跳出迴圈
}
}
if (left > right) {//若區間左端大於右端則說明待尋找的值不在該陣列內
printf("未找到! \n");
}
}
int main() {
int arr[] = { 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, };//隨便定義一個有序陣列;
int toFind;//定義待尋找的值
printf("please enter what data you want to find:\n");
scanf("%d", &toFind);//使用者輸入待尋找的數字
int size = sizeof(arr) / sizeof(arr[0]);//計算陣列長度
//因為陣列作為引數會被轉換成指標,進入函式內在計算長度等於在計算指標的長度,不符合題意
//所以我們可以在主函式內求出長度繼而傳近函式使用
BinarySearch(arr, size, toFind);//呼叫二分查詢函式
system("pause");
return 0;
}
結果演示
相關文章
- 二分查詢函式的使用函式
- PHP 實現二分查詢PHP
- c++字串查詢函式實現C++字串函式
- Js實現二分查詢,加油JS
- Golang實現二分查詢法Golang
- 二分查詢 - 手寫模板與自帶函式函式
- 二分查詢實現符號表符號
- 二分查詢實現----面試總結面試
- Python遞迴函式,二分查詢演算法Python遞迴函式演算法
- Java實現二分查詢演算法Java演算法
- 查詢演算法集:順序查詢、二分查詢、插值查詢、動態查詢(陣列實現、連結串列實現)演算法陣列
- 查詢——二分查詢
- 二分法查詢(遞迴實現)遞迴
- java實現的二分法查詢Java
- 利用樹形查詢實現部分分析函式功能函式
- Excel VBA小程式 -使 用VBA實現VLOOKUP函式查詢?Excel函式
- 轉:C++實現的變種二分查詢法(折半查詢)--二叉查詢樹C++
- Solr複雜查詢一:函式查詢Solr函式
- 二分查詢(一)——純粹的二分查詢
- Python查詢-二分查詢Python
- 二分查詢
- 用兩個二分查詢實現的海倫信封程式
- 查詢演算法__二分查詢演算法
- 順序查詢和二分查詢
- PostgreSQL 查詢替換函式SQL函式
- Solr的函式查詢(FunctionQuery)Solr函式Function
- 子串查詢函式strstr函式
- PHP二分查詢PHP
- 二分查詢法
- 二分查詢的兩種實現形式遞迴和迭代遞迴
- 查詢演算法之二分查詢演算法
- 二分查詢 | 二分查詢的一種推薦寫法
- Oracle中實現查詢結果按照in中條件排序 InStr函式Oracle排序函式
- python查詢演算法的實現-二分法Python演算法
- 【資料結構】折半查詢(二分查詢)資料結構
- 二分插入與二分查詢
- Java-MySql-函式、多表查詢JavaMySql函式
- [Mysql 查詢語句]——集合函式MySql函式