C#版本,二分法查找元素是否在一个目标数组中?
2011-07-19 13:42
671 查看
//二分法查找元素k下标,如果元素存在,则返回其下标,不存在,返回-1
//调用时候,数组必须是已经从小到大已经排序好的数组
public static int BinarySearch(T[] a, int n,T k)
{
int low, high, mid;
low = 0;
high = n - 1;
mid = (low + high) / 2;
while (low <= high)
{
// if (a[mid] < k) low = mid + 1;
if (a[mid].CompareTo(k) < 0) low = mid + 1;
else if (a[mid].CompareTo( k)>0) high = mid - 1;
else break; //找到了
mid = (low + high) / 2;
}
if (low > high) mid = -1; //没有找到
return mid;
} //end BinarySeach
//调用时候,数组必须是已经从小到大已经排序好的数组
public static int BinarySearch(T[] a, int n,T k)
{
int low, high, mid;
low = 0;
high = n - 1;
mid = (low + high) / 2;
while (low <= high)
{
// if (a[mid] < k) low = mid + 1;
if (a[mid].CompareTo(k) < 0) low = mid + 1;
else if (a[mid].CompareTo( k)>0) high = mid - 1;
else break; //找到了
mid = (low + high) / 2;
}
if (low > high) mid = -1; //没有找到
return mid;
} //end BinarySeach
相关文章推荐
- 用二分法在一个数组中查找你所需元素
- 二分法查找数组是否包含某一元素
- 解析php二分法查找数组是否包含某一元素
- 关于一个查找数组中是否存在某一个元素的问题
- 设计一个模板类Sample,用于对一个有序数组采用二分法查找元素下标
- C#实现如何判断一个数组中是否有重复的元素
- 查找一个有序数组中的一个元素——二分法
- 解析php二分法查找数组是否包含某一元素
- php查找一个元素或字符串是否在数组中的三种做法
- indexOf() 如何判断一个元素在指定数组中是否存在? 找出指定元素出现的所有位置? indexOf()方法 是正序查找,lastIndexOf()是倒叙查找
- 如何判断一个整数数组中是否有重复元素
- C#中判断一个数组中是否存在某个数组值 及相关
- 字符串算法——旋转数组中查找目标值(有重复元素)( Search in Rotated Sorted Array II)
- 查找一个list中各个数组的元素在一个固定数组中的位置, 并把位置信息记录到一个矩阵里
- java__给定一个非负整数数组,假定你的初始位置为数组第一个下标。 数组中的每个元素代表你在那个位置能够跳跃的最大长度。 请确认你是否能够跳跃到数组的最后一个下标。
- 黑马程序员之C#编程基础学习笔记:将一个字符串数组的元素的顺序进行反转。
- 利用二分查找在循环递增数组中检索一个元素
- C语言 ,有15个数按由大到小顺序存放在一个数组中,输入一个数,要求用拆半查找法找出该数是数组中的第几个元素的值,如果该数不在数组中,则输出“无此数”
- 在一个长度为10的整形数组中,已经放置好了任意10个整数。要求用户任意输入 一个整数,判断该数字是否在数组中。如果在,删除数组中该元素,并把后面的 元素往前挪。(让空出的位置在最后)
- Java总哈希表的运用,判断一个数组中是否存在相同的元素之间的距离在k以内!