C語言基礎 二分查詢

2021-10-25 02:28:45 字數 1087 閱讀 4330

何為二分查詢

二分查詢也稱折半查詢,它是一種效率較高的查詢演算法,如果查詢的元素包含在列表中,二分查詢返回其位置。

基本思想

假設表中元素是按公升序排列,將表中間位置記錄的關鍵字與查詢關鍵字比較,如果兩者相等,則查詢成功;否則利用中間位置記錄將表分成前、後兩個子表,如果中間位置記錄的關鍵字大於查詢關鍵字,則進一步查詢前一子表,否則進一步查詢後一子表。重複以上過程,直到找到滿足條件的記錄,使查詢成功,或直到子表不存在為止,此時查詢不成功。

**實現

下面是c語言**

#include //用二分法查詢數字number在有序公升陣列array中的位置,該陣列長度為len

//返回值》=0時是位置下標,=-1時是查詢失敗

int binarysearch(int number, int array, int len)

else if (number>array[mid])

else if (number==array[mid])

mid = (left + right) / 2;

} return res;

}int main();

printf("99所在的陣列下標是%d\n", binarysearch(99, a, 10));

printf("48所在的陣列下標是%d\n", binarysearch(48, a, 10));

printf("17所在的陣列下標是%d\n", binarysearch(17, a, 10));

printf("21所在的陣列下標是%d\n", binarysearch(21, a, 10));

return 0;

}

下圖是執行結果

時間複雜度

由於二分查詢在查詢的過程中不斷的將所查詢表的長度減半,很容易得出時間複雜度是log n。

這就是二分查詢的內容了,祝大家學習愉快。

C 基礎 二分查詢

include include using namespace std int init num 100 class solution else return ans 查詢已遞增排序陣列a中 小於等於 或者小於 給定target的 最後乙個 元素的下標 當eq enable為true時 對應 小於等...

C語言 二分查詢

二分查詢有序陣列中查詢具體某個數 條件 陣列為有序陣列 公升序或降序 查詢的思想 在有序陣列中查詢具體某個數,如果有,輸出該數所對應的下標 如果沒有,輸出未找到.具體思想 若為公升序排列的陣列,取陣列中間元素與待查詢的數比較,若待查詢的數小於中間元素,則在陣列左半部分查詢 若待查詢的數大於中間元素,...

C語言折半查詢(二分查詢)

定義 對使用者輸入的數是否在已經按順序定義好的一組數上進行查詢 思想 定義好的一組數必須按順序排序,一般從小到大排序 將一組數分為兩個部分 low指第乙個數,mid指中間乙個數,high指第最後乙個數 把查詢數n與mid比較 如果n mid,說明在mid右側,low的位置發生改變,除去當時low本身...