数据结构基础(5)-->二分查找

来源:互联网 发布:医药软件哪个好 编辑:程序博客网 时间:2024/05/19 18:37
#include <stdio.h>#include <string.h>#include <malloc.h>#include <stdlib.h>int binary_serch(int *arr, int arr_len, int value){int l = 0;int h = arr_len - 1;int m;while(l <= h) {m = l + ((h-l)>>1);if(value > arr[m]) {l = m + 1;} else if(value < arr[m]) {h = m - 1;} else {return m;}}return -1;}int main(int argc, char *argv[]){int pos;int arr[10] = {1, 3, 5, 7, 9, 11, 13, 15, 17, 19};for(pos=0; pos<10; ++pos) {printf("%2d  ", pos);}printf("\n");for(pos=0; pos<10; ++pos) {printf("%2d, ", arr[pos]);}printf("\n\n");pos = binary_serch(arr, 10, 9);printf("  9's pos = %2d...\n", pos);pos = binary_serch(arr, 10, 1);printf("  1's pos = %2d...\n", pos);pos = binary_serch(arr, 10, 19);printf(" 19's pos = %2d...\n", pos);pos = binary_serch(arr, 10, 10);printf(" 10's pos = %2d...\n", pos);pos = binary_serch(arr, 10, -10);printf("-10's pos = %2d...\n", pos);pos = binary_serch(arr, 10, 30);printf(" 30's pos = %2d...\n\n", pos);return 0;}

运行测试结果:

 0   1   2   3   4   5   6   7   8   9   1,  3,  5,  7,  9, 11, 13, 15, 17, 19,   9's pos =  4...  1's pos =  0... 19's pos =  9... 10's pos = -1...-10's pos = -1... 30's pos = -1...