二分查找_递归版_while版
2015-03-27 17:10
197 查看
#include <stdio.h>
int binary_search(const
int arr[],int low,
int high,int key);
int main(int argc,
char **argv)
{
int arr[] = {4,8,20,30,50,60};
int len = sizeof(arr) /
sizeof *arr; //
求数组长度
int key;
printf("请输入一个数字:");
scanf("%d",&key);
printf("\n");
int low = 0;
int high = len -
1;
int pos = binary_search(arr,low,high,key);
printf ("pos = %d\n",pos);
return
0;
}
int binary_search(const
int arr[],int low,
int high,int key)
{
int mind = low + (high - low)/2;
// 记录中间
角标
while (low <= high) {
if (key == arr[mind]) {
return mind;
}
else if(key > arr[mind]){
low = mind + 1;
mind = low + (high - low)/2;
}
else if(key < arr[mind]){
high = mind - 1;
mind = low + (high - low)/2;
}
if(low>high){
return -1;
}
}
return -1;
}
int binary_search(const
int arr[],int low,
int high,int key);
int main(int argc,
char **argv)
{
int arr[] = {4,8,20,30,50,60};
int len = sizeof(arr) /
sizeof *arr; //
求数组长度
int key;
printf("请输入一个数字:");
scanf("%d",&key);
printf("\n");
int low = 0;
int high = len -
1;
int pos = binary_search(arr,low,high,key);
printf ("pos = %d\n",pos);
return
0;
}
int binary_search(const
int arr[],int low,
int high,int key)
{
int mind = low + (high - low)/2;
// 记录中间
角标
while (low <= high) {
if (key == arr[mind]) {
return mind;
}
else if(key > arr[mind]){
low = mind + 1;
mind = low + (high - low)/2;
}
else if(key < arr[mind]){
high = mind - 1;
mind = low + (high - low)/2;
}
if(low>high){
return -1;
}
}
return -1;
}
相关文章推荐
- 三种不同方式求1到100的和(递归,for,while)
- 递归分治算法之二维数组二分查找(Java版本)
- C语言实现递归的二分查找
- 用JavaScript实现二分查找(递归)
- Python实现素数筛法与二分查找(递归)
- PHP实现二分查找(递归与非递归)
- Python的最大递归深度错误 “maximum recursion depth exceeded while calling a Python object”
- 二分查找 非递归
- 【算法】递归与while循环的通俗比较
- scala中循环不建议使用while和do...while,而建议使用递归
- 计算1-n的和(不用for, while, goto, if, else, switch, case和三目运算符, 也不用乘除法)---利用间接递归
- 循环与递归--不使用if,while,for,do—while语句来输出所有比已知数N小的自然数
- 递归实现二分查找
- 二分查找(递归与非递归)
- 二分查找(递归与非递归方式)
- while、do-while、for、goto、递归五种方式求一个整数的位数
- 二分查找(递归和普通迭代)
- 二分查找(递归与非递归)
- JavaScript - For, While和 递归
- java实现二分查找(迭代与递归)