实验报告(第二周)
(选择的题目为第二题改编二分搜索算法)
第二题是在第一题的基础上改编的,所以在二分搜索上并没有遇到问题,我的想法是在调用函数里面分4种情况:(1)用while语句判断输入的关键字x是否等于数组a【n】里面的某个值,设置middle=(left+right)/2,left初始值为0,right初始值为n-1,即时第一题的情况;
接下来用if语句:(1)x小于a【0】;(2)x大于a【n-1】;(3)x的值在数组中
但在解决第3种情况时一直答案错误,在上机的时候为什么错忘了,因为当时没有保留源代码;后来错误的原因是少了一对{},导致for 语句一直在循环。部分代码如下:
for(int j=1; j<n; j++)
{
if(key<a[j])
{
cout<<j-1<<" "<<j<<endl;
break;
}
感想:在编写程序时算法很重要,但语法也要注意,不然可能会因为一个小错误而垮掉。