实现二分查找(指针和数组)
来源:互联网 发布:windows phone8评测 编辑:程序博客网 时间:2024/06/05 18:27
指针实现:
int research(int *a, int key, int length)
{
assert(a);
int *p = a;
int *b = p + length - 1;
while (b >= p)
{
int c = (b - p) / 2;
if (*(p + c) == key)
return key;
else if (*(p + c) < key)
p = p+c+1;
else
b = b-c-1;
}
return -1;
}
数组实现:
int research(int a[],int key,int length)
{
int low = 0;
int high = length - 1;
int mid = 0;
while (high > low)
{
int mid = ((high+low)>>1);
if (a[high] == key || a[low] == key||a[mid]==key)
return key;
else if (key < a[mid])
high = mid;
else
low = mid;
}
return -1;
}
结果实现:
总结:
注意边界值的确定,注意传参的时候,要连数组的长度length一起传过来,否则在本题中,函数内部求的length将会是1,可以调试看一下,主要是因为数组传过来之后退化为指针,在除以a[0],即除以数组首元素的大小,由于是int也是四个字节,故求出的length将会是1.
阅读全文
0 0
- 实现二分查找(指针和数组)
- C语言二分查找法(指针和数组实现)
- 二分查找 数组和指针方法
- 二分查找法-指针和数组表示-优化效率
- 使用c语言指针和递归方法实现二分查找
- (Java)数组的选择排序法和二分查找法实现
- java 对象数组的排序(实现Comparable接口)和二分查找
- 数组的线性查找和二分查找
- 二分查找和循环数组查找
- 使用指针数组实现bst插入和查找操作
- Java实现数组二分查找及递归二分查找
- 二分查找(实现)
- 实现有序列表(基于数组,二分查找)
- 二分查找原理和实现
- 旋转数组(二分查找)
- java实现顺序查找和二分查找
- 基于数组二分查找算法的实现
- 查找:链表顺序查找和有序数组二分查找
- 笔记6 | 从源码理解分析mScrollX和mScrollY,scrollTo()和scrollBy(),smoothScrollTo和smoothScrollBy
- 设计模式(四)
- 32位汇编——c语言循环do——while
- Intellij IDEA创建Maven Web项目(带有webapp文件夹目录的项目)
- Unity平台的预处理
- 实现二分查找(指针和数组)
- css inline-block 与 float的使用
- Handler sendMessage 与 obtainMessage (sendToTarget)比较
- hadoop配置HA简单总结
- 关于Autosar中的NM模块的理解
- 用EXCEL来解决同期比较的问题
- 为什么指针为NULL还能调用成员函数?
- 8月份英语总结博客——小黑屋
- Java获取apk / ipa应用信息的思考与实践