当前位置:首页 » 操作系统 » 二分查找递归算法

二分查找递归算法

发布时间: 2022-02-26 19:35:19

A. C语言 二分查找算法 用递归实现 我改动了一下

本人直接打出来的,并未在平台上编译运行过,所以可能会有语法错位,还请自行调试更改
#include<stdio.h>

int RecorBinarySearch(int a[], int, int, int);
int main(void)
{
int i=0, n, m, key;
int a[10000], c[10000];

scanf("%d", &n);
scanf("%d", &m);

printf("提示:输入%d个整数且必须按升序排列。\n", n);
for(i=0; i<n; i++){
scanf("%d", &a[i]);
}
printf("提示:输入%d个预查找的数。\n", m);
for(i=0; i<m; i++){
scanf("%d", &key);
c[i] = RecorBinarySearch(a, key, 0, n-1);
}
printf("提示:输出预查找的数在数组中的位置。(-1代表未找到)\n");
for(i=0; i<m; i++) {
printf("%d ", c[i]);
}
return 0;
}

int RecorBinarySearch(int a[], int key, int low, int high)
{
int nRet;
if(low > high)
nRet = -1;
else {
int mid = (high + low) / 2;
if(key == a[mid])
nRet = mid;
else if(key > a[mid])
nRet = RecorBinarySearch(a, key, mid+1, high);
else if(key < a[mid])
nRet = RecorBinarySearch(a, key, low, mid-1);
}
return nRet;
}

B. 二分查找的递归实现

//如下在VC6.0下编译通过。
//以后要注意仔细一点。
#include <stdio.h>
#include <stdlib.h>
#define N 11
#define COMPARE(x,y) (x)<(y)?-1:((x)==(y)?0:1)
int binsearch(int searchnum,int list[],int left,int right);
int main()
{
int list[N]={1,3,5,8,10,14,17,19,23,26,29};
int ele,conse;
printf("input a number searching for.");
scanf("%d",&ele);
conse=binsearch(ele,list,0,11);
if(conse==-1)
fprintf(stderr,"error,have no equal value.");
else
printf("%d is found in list.",ele) ;
return 0;
}
int binsearch(int searchnum,int list[],int left,int right)
{
int middle;
if(left<=right)
{
middle=(left+right)/2;
switch(COMPARE(list[middle],searchnum))
{
case-1: return binsearch(searchnum,list,middle+1,right);
case 0: return middle;
case 1: return binsearch(searchnum,list,left,middle-1);
}
}
return -1;
}

C. 二分法和二分检索,还有拆班查找各自之间有什么区别和联系啊有谁有二分检索的递归算法啊

http://..com/question/26674719.html

这个递归的二分查找是我写的,可以参考一下

D. java二分法查找的递归算法怎么实现

publicclass二分法递归查找{
publicstaticvoidmain(String[]args){

//定义数组,注意,二分查找数组必须是有序的数组!
int[]arr={1,3,5,7,9,11,13,15,17};

//接受查找后的返回值:索引值,如果没有则是-1;
//测试查找元素:9
inta=binary(arr,9,0,arr.length-1);
System.out.println("被查找数字索引位置在:"+a);
}
//参数列表依次为:被查找的数组,查找的数字,头索引,尾索引!
publicstaticintbinary(int[]arr,intkey,intstar,intend)//递归
{
//每次进来创建,中间索引值!
intmid=(star+end)/2;
//如果被查找数小于头,或者尾,或者头索引大于尾索引,则说明无该数,返回-1;
if(key<arr[star]||key>arr[end]||star>end){
return-1;
}
//如果中间值小于被查找数,则重新定义头索引移至中间+1位置,筛选掉一半数字!
if(arr[mid]<key){
//开始递归!
returnbinary(arr,key,mid+1,end);
//否则如果中间值大于被查找数,则重新尾索引移至中间-1位置,筛选掉一半数字!
}elseif(arr[mid]>key){
//开始递归!
returnbinary(arr,key,star,mid-1);
}else{
//否者就是找到了,返回该索引!
returnmid;
}
}
}

E. 二分查找算法

前提要求数据排好序,有递归和非递归版本
int binSearch(const int *Array,int start,int end,int key)
{
int left,right;
int mid;
left=start;
right=end;
while (left<=right) { /注释中为递归算法,执行效率低,不推荐
mid=(left+right)/2;
/* if (key<Array[mid]) {
return(binSearch(Array,left,mid,key));
}
else if(key>Array[mid]){
return (binSearch(Array,mid+1,right,key));
}
else
return mid;
*/
if (key<Array[mid]) {
right=mid-1;
}
else if(key>Array[mid]){
left=mid+1;
}
else
return mid;
}
return -1;
}

F. 编写一个在有序表中二分查找给定关键字记录的递归算法 (C语言)

其实这个书本上可以找到的,逻辑也比较容易实现。我写一下主要的逻辑吧。
int Serch(int * a, int low, int high. int key)
{
if (low <= high)
{

int mid = ( high - low) / 2 + low;
if (key == a[mid]) // 找到了

return mid;
else if (key < a[mid]) // 比中间值小,向前找

Serch(a, low, mid - 1, key);
else // 向后找

Serch(a, mid + 1, high, key);

}
return -1; // 没找到

}

G. 《编程珠玑》一道练习题:二分查找的递归算法,要求函数名为int binarysearch(DataType x[], int n)。

int binarysearch(DataType x[],int n)
{
int low = 0;
int high = n-1,mid;
while(low<high)
{
mid = (low + high)/2;
if(x[mid]<n) low = mid+1;
else if(x[mid]>n) high = mid -1;
else
return mid;
}
return -1;
}

H. 如下为二分查找的非递归算法,试将其填写完整。

递归算法是一种分而治之的方法,简单的说就是调用自己本身;能把复杂的问题化为简单来解决;但是执行的效率比较低,所以一般分析问题用递归,实际解决问题用非递归。

I. 二分查找使用迭代法和递归法谁更有效

迭代法,代码的运行时间其实就是指令的运行时间,而递归函数调用的入栈出栈耗时在这种密集调用下是不可忽略的。

热点内容
四节课编程 发布:2024-09-22 07:19:11 浏览:297
安卓java模拟器apk 发布:2024-09-22 07:02:04 浏览:422
奈曼的扶贫密码是多少 发布:2024-09-22 07:01:13 浏览:823
编程工资高 发布:2024-09-22 06:39:56 浏览:490
小票商品编程 发布:2024-09-22 06:39:12 浏览:371
电池存储仓库 发布:2024-09-22 06:08:21 浏览:368
服务器添加多个ip 发布:2024-09-22 05:30:49 浏览:632
cf手游开脚本怎么隐藏 发布:2024-09-22 05:28:55 浏览:178
4t存储速度 发布:2024-09-22 05:17:00 浏览:917
什么是结构化算法 发布:2024-09-22 05:06:20 浏览:915