C语言实现二分查找
2019-04-24 21:17
162 查看
下面为在数组a[10] = { 1, 2, 3, 4, 5, 6, 7, 8, 9,10 }中实现二分查找的代码
#include<stdio.h> #include<stdlib.h> void binary_search(int *arr, int right, int k) //二分查找函数 { int left = 0; //lef为数组第一个元素下标,right为数组最后一个元素下标 while (left <= right) { int mid = (left + right) / 2; //mid为中间元素下标 if (arr[mid] > k) { right = mid - 1; } else if (mid[arr] < k) { left = mid + 1; } else { printf("找到了,下标为:%d\n", mid); break; } } if (left>right) printf("找不到!\n"); } int main() { int n; int a[10] = { 1, 2, 3, 4, 5, 6, 7, 8, 9,10 }; int ret = sizeof(a) / sizeof(a[0]) - 1; printf("请输入要查找的数:\n"); scanf("%d", &n); binary_search(a,ret,n);//调用函数,求出结果 system("pause"); return 0; }
二分查找又称折半查找,优点是比较次数少,查找速度快,平均性能好,占用系统内存较少;其缺点是要求待查表为有序表,且插入删除困难。因此,折半查找方法适用于不经常变动而查找频繁的有序列表。首先,假设表中元素是按升序排列,将表中间位置记录的关键字与查找关键字比较,如果两者相等,则查找成功;否则利用中间位置记录将表分成前、后两个子表,如果中间位置记录的关键字大于查找关键字,则进一步查找前一子表,否则进一步查找后一子表。重复以上过程,直到找到满足条件的记录,使查找成功,或直到子表不存在为止,此时查找不成功。
相关文章推荐
- c语言简单递归/非递归实现二分查找
- c语言:代码实现折半(二分)查找
- C语言调用库函数实现二分查找
- c语言实现二分查找变种题型
- 顺序表查找(顺序查找、二分查找) C语言实现
- C语言:递归和非递归实现二分查找
- C语言调用库函数实现二分查找
- 二分查找C语言实现
- C语言实现直接插入排序,冒泡排序以及二分查找(巩固理解记忆)
- C语言二分查找算法及实现代码
- C语言实现 二分查找数组中的Key值(递归和非递归)
- C语言编程中实现二分查找的简单入门实例
- c语言利用递归实现二分查找
- C语言使用stdlib.h库函数的二分查找和快速排序的实现代码
- c语言简单实现二分查找
- C语言实现折半查找(二分查找)的算法
- 使用c语言指针和递归方法实现二分查找
- C语言数据结构中二分查找递归非递归实现并分析
- C语言实现数组二分查找与顺序查找
- C语言实现 二分查找 支持降序和升序