您的位置:首页 > 编程语言 > Java开发

使用Java完成《算法导论》习题2.3-5

2015-06-13 11:16 274 查看
public class BinarySreach2_3_5
{
/**
*  在已排序的序列中进行二分查找
*  @date 2015-6-13
*  @author lemma
*/

// doSreach方法
public int doSreach(int Data[], int target)
{
// 标记序列的头、尾和中点
int start = 0;
int end = Data.length - 1;
int middle = (start + end) / 2;
int indexTarget = -1;
// 二分查找
for (; start <= end;)
{
// 如果middle等于target则终止查找
if (Data[middle] == target)
{
indexTarget = middle;
break;
}
// 如果middle比target大,则查找左半部分
else if (Data[middle] > target)
{
end = middle - 1;
middle = (start + end) / 2;
}
// 如果middle比target小,则查找右半部份
else if (Data[middle] < target)
{
start = middle + 1;
middle = (start + end) / 2;
}
}
//返回目标的数组下标
return indexTarget;
}

public static void main(String args[])
{
BinarySreach2_3_5 bs = new BinarySreach2_3_5();
int Data[] = { 1, 5, 9, 15, 45, 87, 97, 124 };
int number = 87;
if (bs.doSreach(Data, number) != -1)
System.out.println(Data[bs.doSreach(Data, number)]);
else
System.out.println("The Number is not existed");
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息