#C语言
== 二分查找法 ==
所谓的二分查找法,其实是一种有序的查找方法,也称折半查找(Binary Search),如果是无序的则要先进行排序操作。基本思想是:目标值通过与中间元素比较,可分为三种情况:
第一种情况:目标值与中间元素相等,查找结束;
第二种情况:目标值比中间元素大,则把后半部分的中间元素与目标值比较;
第二种情况:目标值比中间元素小,则把前半部分的中间元素与目标值比较;
这三步一直循环,直到查找结束。
程序如下:
#include
int Bin_Search(int *num,int cnt,int target) { int first = 0,last = cnt-1,mid; int counter = 0; while(first <= last) { counter ++; mid = (first + last) / 2;//确定中间元素 if(num[mid] > target) { last = mid-1; //mid已经交换过了,last往前移一位 } else if(num[mid] < target) { first = mid+1;//mid已经交换过了,first往后移一位 } else //判断是否相等 { printf("查找次数:%d\n",counter); return 1; } } printf("查找次数:%d\n",counter); return 0; } int main(void) { int flag = 0,target; int num[10] = {1,2,3,4,5,6,7,8,10}; while(1) { printf("请输入您要查找的数字:\n"); scanf("%d",&target); flag = Bin_Search(num,10,target); if(flag) printf("已经找到该数字!!\n"); else printf("无该数字!!\n"); } return 0; }
发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/216824.html原文链接:https://javaforall.net
