C二分查递归与非递归的实现代码

C⼆分查递归与⾮递归的实现代码复制代码代码如下:
#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;
}

本文发布于:2024-09-20 18:31:55,感谢您对本站的认可!

本文链接:https://www.17tex.com/xueshu/397835.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:代码   递归   红棉   神经   返回   返回值
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议