标签:
#include<stdio.h> void binary_search(int key, int a[], int n) /*自定义函数binary_search*/ { int low, high, mid, count = 0, count1 = 0; low = 0; high = n - 1; while (low < high) /*当查找范围不为0时执行循环体语句*/ { count++; /*count记录查找次数*/ mid = (low + high) / 2; /*求出中间位置*/ if (key < a[mid]) /*当key小于中间值*/ high = mid - 1; /*确定左子表范围*/ else if (key > a[mid]) /*当key大于中间值*/ low = mid + 1; /*确定右子表范围*/ else if (key == a[mid]) /*当key等于中间值证明查找成功*/ { printf("查找成功!\n查找 %d 次!a[%d]=%d", count, mid, key); /*输出查找次数及所查找元素在数组中的位置*/ count1++; /*count1记录查找成功次数*/ break; } } if (count1 == 0) /*判断是否查找失败*/ printf("查找失败!"); /*查找失败输出no found*/ } void main() { int i, key, a[100], n; printf("请输入数组的长度:\n"); scanf("%d", &n); /*输入数组元素个数*/ printf("请输入数组元素:\n"); for (i = 0; i < n; i++) scanf("%d", &a[i]); /*输入有序数列到数组a中*/ printf("请输入你想查找的元素:\n"); scanf("%d", &key); /*输入要查找的关键字*/ binary_search(key, a, n); /*调用自定义函数*/ printf("\n"); }
标签:
原文地址:http://www.cnblogs.com/flywolf601/p/5951076.html