二分法查找
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 | #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" ); } |
年轻的时候,就要去多吃苦。去拼搏,去闯,否则老了,连谈资都没有!
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步