二分查找

来源:互联网 发布:移动硬盘恢复软件 编辑:程序博客网 时间:2024/06/11 16:14

基本思想:先选取中间位置的数字,与要查找的key值比较,若相等,则查找成功;若大于key值,则key值位于前半部分;否则位于后半部分,一步步折半查找。代码如下:

#include<stdio.h>void binary_search(int key, int a[], int n) {int low, high, mid, count=0,count1=0;low=0;high=n-1;while(low<high) {count++;mid=(low+high)/2;if(key>a[mid]) {low=mid+1;} else if(key<a[mid]) {high=mid-1;}else if(key==a[mid]){printf("查找成功!\n查找%d次!\n a[%d]=%d",count,mid,key);count1++;break;}}if(count1==0) {printf("查找失败!\n");}}int main() {int n,i,key;int *a=(int *)malloc(n*sizeof(int));printf("请输入数组的长度:\n");scanf("%d",&n);printf("请输入数组元素:\n");for(i=0;i<n;i++) {scanf("%d",&a[i]);}printf("请输入要查找的元素:\n");scanf("%d",&key);binary_search(key,a,n);printf("\n");free(a);return 0;}



1 0
原创粉丝点击