二分查找(C语言)

来源:互联网 发布:android源码 编辑:程序博客网 时间:2024/05/17 04:29

二分查找又称折半查找,优点是比较次数少,查找速度快,平均性能好;其缺点是要求待查表为有序表,且插入删除困难。采用分治策略,可在最坏的情况下用O(log n)完成搜索任务。

算发要求:

1)必须采用顺序存储结构

2)必须按关键字大小有序排列。

#include<stdio.h>int binarySearch(const int *array, int start, int end, int key);int main() {    int a[] = {1, 2, 3, 4, 5, 6, 7, 8, 9};int result = binarySearch(a, 0, 8, 10);printf("%d\n", result);    return 0;}/*// recursiveint binarySearch(const int *array, int start, int end, int key) {    int left, right;int mid;    left = start;right = end;mid = (left + right)/2;if (left > right) return -1;else if (key == array[mid]) return mid;else if (key < array[mid]) return binarySearch(array, left, mid-1, key); // return 没有用到else if (key > array[mid]) return binarySearch(array, mid+1, right, key);}*/// iterationint binarySearch(const int *array, int start, int end, int key) {int left, right;int mid;    left = start;    right = end;while (left <= right) {        mid = (left + right)/2;if (key == array[mid]) return mid;else if (key < array[mid]) right = mid -1;else if (key > array[mid]) left =  mid +1;}return -1;}





0 0
原创粉丝点击