引言:c语言编程基础算法,查找顺序链表或数组某个元素下标的常用方法
核心思想:求数组元素个数的方法、指针运算、向前向后同时遍历。
程序如下:
#define _CRT_SECURE_NO_WARNINGS 1//避免scanf函数报错 #includeint main() { int arr[]={0,1,2,3,4,5,6,7,8,9,10}; int k; int left=0; int right= 0; int mid=0; int sz=0; printf("Please enter the number you are looking forn"); scanf("%d",&k); sz=sizeof(arr)/sizeof(arr[0]); left=0; right=sz-1; while(left<=right) { mid=(left+right)/2; if(arr[mid] k) right=mid-1; else { printf("We found that the subscript of this number is %dn",mid); break; } } if(left>right) printf("sorry we can't fund the subscript"); return 0; }
运行并验证:
总结及注意事项:
1、求数组元素的方法是sizeof(数组名)/sizeof(数组首元素)!
2、二分法查找的思想:(1)确定该区间的中间位置K(2)将查找的值T与array[k]比较。若相等,查找成功返回此位置;否则确定新的查找区域,继续二分查找。每一次查找与中间值比较,可以确定是否查找成功,不成功当前查找区间将缩小一半。
3、二分法查找的终止条件是像前遍历的指针等于向后遍历的指针时。



