二分查找 数组和指针方法
2008-12-27 15:41
357 查看
/*************二分查找之数组版本******************
参数说明:
int* t : 待查找数组的指针
int n : 该数组的大小
int x : 需要查找的数据
返回值说明:
NULL : 没有找到
其他 : 返回找到对应数据位置
备注:
查找前提是待查找的数据是已经排好序
**************************************************/
int* BinSearch(int* t, int n, int x)
{
int low = 0;
int hig = n;
while (low < hig)
{
int mid = (hig + low)/2;
if (x < t[mid])
{
hig = mid;
}
else if
{
low = mid + 1;
}
else
{
return t+mid;
}
}
return NULL;
}
/****************指针版本****************/
int* BinSearch(int* t, int n, int x)
{
int* low = t;
int* hig = t + n;
while (low < hig)
{
int* mid = low + ((hig - low)>>1);
if (x < *mid)
{
hig = mid;
}
else if
{
low = mid + 1;
}
else
{
return mid;
}
}
return NULL;
}
参数说明:
int* t : 待查找数组的指针
int n : 该数组的大小
int x : 需要查找的数据
返回值说明:
NULL : 没有找到
其他 : 返回找到对应数据位置
备注:
查找前提是待查找的数据是已经排好序
**************************************************/
int* BinSearch(int* t, int n, int x)
{
int low = 0;
int hig = n;
while (low < hig)
{
int mid = (hig + low)/2;
if (x < t[mid])
{
hig = mid;
}
else if
{
low = mid + 1;
}
else
{
return t+mid;
}
}
return NULL;
}
/****************指针版本****************/
int* BinSearch(int* t, int n, int x)
{
int* low = t;
int* hig = t + n;
while (low < hig)
{
int* mid = low + ((hig - low)>>1);
if (x < *mid)
{
hig = mid;
}
else if
{
low = mid + 1;
}
else
{
return mid;
}
}
return NULL;
}
相关文章推荐
- 对整数数组进行二分查找;传数组指针会丢失数组大小信息。
- ruby数组和哈希表的区别,递归,二分查找方法
- 使用c语言指针和递归方法实现二分查找
- 选择排序,二分查找,Arrays类操作数组的各种方法
- lastIndexOf() 找出指定元素出现的所有位置(返回的是下标数组)---lastIndexOf() 这个方法是倒叙查找,正序的是indexOf()
- 数组(二分查找)
- 有序数组的二分查找
- 二分查找的两种实现方法
- 【C++】随机生成数组->冒泡排序->二分查找
- 数组去重,字符串查找最多字符方法总结
- Java实现数组二分查找及递归二分查找
- 分别用数组与指针的方法打印出二维数组
- 输入连续有序数组,数组中有一个数字丢失,二分查找
- 数组-二分查找
- 《C++ Primer》学习 之 返回数组的引用(返回数组的指针,方法与之相同)
- 《数据结构与算法》学习笔记3 有序数组与二分查找
- 【疑问】leetcode - 658. Find K Closest Elements【二分查找 + 双指针 + 找最近】
- HDU 2871 Memory Control 线段树(区间合并)+二分查找+vector的常用方法
- 九度OJ 1534 数组中第K小的数字 -- 二分查找
- 创建函数能够对整型数组进行二分查找。