手机
当前位置:查字典教程网 >编程开发 >C语言 >C 二分查找 递归与非递归的实现代码
C 二分查找 递归与非递归的实现代码
摘要:复制代码代码如下:#includeintbinSearch(intarr[],intlow,inthigh,intkey);intbinSe...

复制代码 代码如下:

#include <stdio.h>

int binSearch(int arr[], int low, int high, int key);

int binSearch2(int arr[], int low, int high, int key);

int binSearch3(int arr[],int start,int ends,int key);

int main() {

int arr[]={3,8,11,15,17,22,23,26,28,29,34};

//printf("%d",binSearch(arr,0,10,26));

printf("%d",binSearch3(arr,0,10,26));

return 1;

}

int binSearch(int arr[], int low, int high, int key) {

int flag=-1;

int mid = (low + high) / 2;

if (low > high) {

flag= -1;

} else {

if (arr[mid] < key) {

flag= binSearch(arr, mid + 1, high, key);

} else if (arr[mid]>key) {

//比如要找的节点在下面这一层 那么这一层会返回下标上来 用flag接住嘛...

flag= binSearch(arr,low,mid-1,key);//又差一点忘记了用flag取接住返回值了

} else {

flag= mid;

}

}

return flag;

}

//ok==============================

int binSearch2(int arr[], int low, int high, int key) {

int mid = (low + high) / 2;

if (low > high) {

return -1;

} else {

if (arr[mid] < key) {

return binSearch2(arr, mid + 1, high, key);

} else if (arr[mid]>key) {

return binSearch2(arr,low,mid-1,key);

} else {

return mid;

}

}

}

int binSearch3(int arr[],int start,int ends,int key){

int mid=-1;

while(start<=ends){

mid=(start+ends)/2;

if(arr[mid]<key){

start=mid+1;

}else if(arr[mid]>key){

ends=mid-1;

}else{

break;

}

}//上述循环结束后不一定就是 start>ends的 因为有break语句

if(start>ends){

mid=-1;

}

return mid;

}

【C 二分查找 递归与非递归的实现代码】相关文章:

基于malloc与free函数的实现代码及分析

C++中一维数组与指针的关系详细总结

哈夫曼的c语言实现代码

c++ 巧开平方的实现代码

c++ 判断奇数偶数实例介绍

用c语言根据可变参数合成字符串的实现代码

C++读写Excel的实现方法详解

判断机器大小端的两种实现方法

C语言中函数与指针的应用总结

C++实现:螺旋矩阵的实例代码

精品推荐
分类导航