N个元素的有序数组A,判断是否有 A[i]=i 存在
2011-11-07 20:01
225 查看
/// <summary>
//下述算法只对严格单调的整数数组有效,复杂度O(N);
/// 查找数组中的一个数k,满足a[k] == k
/// 需保证a数组严格单调上升
/// </summary>
/// <returns>找到返回k,找不到返回-1</returns>
public staticint
FindNumber(int[]a)
{
if (a==
null)
return -1;
int left =0, right= a.Length;
while (left+
1< right)
{
int mid = left+
(right- left)/
2;
if (a[mid]>
mid)
right = mid;
else
left = mid;
}
return a[left]== left
? left:
-1;
}
//下述算法只对严格单调的整数数组有效,复杂度O(N);
/// 查找数组中的一个数k,满足a[k] == k
/// 需保证a数组严格单调上升
/// </summary>
/// <returns>找到返回k,找不到返回-1</returns>
public staticint
FindNumber(int[]a)
{
if (a==
null)
return -1;
int left =0, right= a.Length;
while (left+
1< right)
{
int mid = left+
(right- left)/
2;
if (a[mid]>
mid)
right = mid;
else
left = mid;
}
return a[left]== left
? left:
-1;
}
相关文章推荐
- 判断数组是否存在某元素
- 一个长度为N的整形数组,数组中每个元素的取值范围是[0,N-1],写一个算法判断数组中是否存在重复的数字
- 判断数组中是否存在重复元素
- 程序员面试题目总结--数组(一)【递归求数组所有元素和、用一个for循环打印出一个二维数组、用递归判断数组是否是递增、有序数组中删除重复元素】
- 判断一个int数组中的元素是否存在重复
- 判断有序整型数组中是否存在两数,相加之和等于给定的任意整数
- C# 判断数组中是否存在该元素
- 判断数组中是否存在重复的元素
- 判断两个有序数组中是否存在相同的数字
- 如何在前端用js判断一个元素在一个数组中是否存在
- 判断二叉树是否平衡、求二叉树的镜像、按行列有序矩阵中快速查找元素是否存在
- java笔记:Java字符串数组中判断是否存在某元素的方法
- 哈希(6) - 判断数组中是否存在重复元素且距离在K之内
- 递归方法判断数组中的元素是否有序(Java实现)
- C#判断某元素是否存在数组中
- jQuery inArray()函数判断元素是否存在数组中
- 判断两个有序数组中是否存在相同的数字
- 【指针】16周项目四。判断两个有序数组中是否存在相同的数字
- 有序整型数组A,判断A中是否存在两个数之和等于X,时间O(n)
- javascript 判断两个数组中是否存在相同元素