折半查找
来源:互联网 发布:登陆facebook没网络 编辑:程序博客网 时间:2024/06/08 03:25
编写程序实现折半查找算法。
Description
第一行是查找表的长度n
第二行是查找表中的数据元素 ;
第三行是要查找的数据元素的关键字.
第二行是查找表中的数据元素 ;
第三行是要查找的数据元素的关键字.
Input
查找成功返回位序,不成功返回-1 ,第二行为比较的次数。
Output
1
2
3
11
5 13 19 21 37 56 64 75 80 88 92
100
Sample Input
1
2
-1
4
Sample Output
#include<stdio.h>
#include<stdlib.h>int main()
{
void chek(int total);
int total;
while(scanf("%d",&total)!=EOF)
{
chek(total);
}
return 0;
}
void Input(int total,int *arr,int num)
{
int i;
for(i=0;i<total;i++)
scanf("%d",&arr[i]);
scanf("%d",&num);
}
void chek(int total)
{
//void Input(int total,int *arr,int num);
void cacu(int taotal,int *arr,int num);
int *arr,num;
arr=(int *)malloc(sizeof(int)*total);
//Input(total,arr,num);
int i;
for(i=0;i<total;i++)
scanf("%d",&arr[i]);
scanf("%d",&num);
cacu(total,arr,num);
free(arr);
}
void cacu(int total,int *arr,int num)
{
int low=0,heigh=total-1;
int mid;
int sum=0,flag=0;
while(low<=heigh)
{
sum++;
mid=(low+heigh)/2;
if(arr[mid]==num)
{
flag=1;
break;
}
else if(num>arr[mid])
low=mid+1;
else if(num<arr[mid])
heigh=mid-1;
}
if(flag==0)
printf("-1\n%d",sum);
else
printf("%d\n%d",mid,sum);
}
我如果用红色的部分写的话,在cacu()函数中,数组arr的值没有传进来,为什么?是不是因为Input()函数没有返回值?数组我记得好像是不用专门的返回值的,直接写就可以了,不知道这次为什么可以。。
0 0
- 折半查找
- 折半查找
- 折半查找
- 折半查找
- 折半查找
- 折半查找
- 折半查找
- 折半查找
- 折半查找
- 折半查找
- 折半查找
- 折半查找
- 折半查找
- 折半查找
- 折半查找
- 折半查找
- 折半查找
- 折半查找
- Tesseract-OCR 字符识别---样本训练
- Struts 2 学习笔记:Struts 2 中 Ajax 的使用方法
- Python 学习之一:在Mac OS X下基于Sublime Text搭建开发平台包含numpy,scipy
- Struts拦截器
- Java面试内容—06-11
- 折半查找
- 符号“∑”和“Π”的用法。
- LeetCode 之 String to Integer (atoi) — C 实现
- iOS 实现角标 新消息提示红点 数字角标
- cent os 7修系统默认引导
- 在MyEclipse 8.5中配置Hibernate的方法
- [JQ权威指南]第三天:JQ选择器之表格隔行变色
- C++ auto_ptr智能指针的用法
- OpenGl核心函数库