c语言二分法实现查找数组元素的方法:1、递归算法,代码为【if(a[mID] == key) return mID】;2、非递归算法,代码为【while( left < right && a[mID] != key )】。
本教程 *** 作环境:windows7系统、c99版本,DELL G3电脑。
c语言二分法实现查找数组元素的方法:
递归算法
#include<stdio.h>//二分法实现数组查找 //int recurbinary(int *a, int key, int low, int high){ int mID; if(low > high) return -1; mID = (low + high)/2; if(a[mID] == key) return mID; else if(a[mID] > key) return recurbinary(a,key,low,mID -1); else return recurbinary(a,key,mID + 1,high); }
非递归算法
int binary( int *a, int key, int n ){ int left = 0, right = n - 1, mID = 0; mID = ( left + right ) / 2; while( left < right && a[mID] != key ) { if( a[mID] < key ) { left = mID + 1; } else if( a[mID] > key ) { right = mID - 1; } mID = ( left + right ) / 2; } if( a[mID] == key ) return mID; return -1;} int main(voID){int a[10] = {2,4,6,8,10,12,14,16,18,20},t,k,f;scanf("%d",&t);k = recurbinary(a,t,2,20);f = binary(a,t,10); //非递归算法if(k == -1){printf("不存在此数\n");}else{printf("%-5d是数组第%d个元素\n%-5d数组的第%d个元素",k,k+1,f,f+1);} return 0;}
总结【相关学习推荐:C语言教程视频】
以上是内存溢出为你收集整理的c语言二分法如何实现查找数组元素全部内容,希望文章能够帮你解决c语言二分法如何实现查找数组元素所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)