小兔网

c语言二分法实现查找数组元素的方法:1、递归算法,代码为【if(a[mid] == key) return mid】;2、非递归算法,代码为【while( left < right && a[mid] != key )】。

c语言二分法如何实现查找数组元素

本教程操作环境: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语言二分法如何实现查找数组元素的知识。速戳>>知识兔学习精品课!