首页 > 代码库 > 二分查找
二分查找
【二分查找】
针对有序数组,性能非常好。
【时间复杂度】
logn
【代码】
#include <stdio.h> #include <stdlib.h> //非递归实现二分查找 int BinarySearch1(int a[], int n, int key) { int left, right; int mid; left = 0; right = n - 1; while(left <= right) { mid = (left + right) / 2; if(key == a[mid]) return mid; else if(key > a[mid]) left = mid + 1; else right = mid - 1; } return -1; } //递归实现二分查找 int BinarySearch2(int a[], int left, int right, int key) { if(left > right) return -1; else { int mid = (left + right) / 2; if(key == a[mid]) return mid; else if(key < a[mid]) BinarySearch2(a, left, mid - 1, key); else BinarySearch2(a, mid + 1, right, key); } } int main(void) { int a[13] = {3, 14, 27, 31, 39, 42, 55, 70, 74, 81, 85, 93, 98}; int key = 81; int index1, index2; index1 = BinarySearch1(a, 13, key); index2 = BinarySearch2(a, 0, 13, key); printf("%d %d\n", index1, index2); return 0; }
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。