读书人

有N个数的数列要求从键盘上输入一个

发布时间: 2012-06-14 16:00:31 作者: rapoo

有N个数的数列,要求从键盘上输入一个数,用顺序查找法查找该数是否存在数列中。如果该数存在数列中,则打印出该数是数列中第几个元素;若不在,则打印出“无此数”的信息
大神帮我改改程序啊

#include <iostream>
using namespace std;
int main(){
int i,num;
int list[10]={1,3,5,7,9,13,15,17,19,21};
cin>>num;
for(i=0;i<10;i++)
{
if(list[i]==num){
cout<<i+1<<endl;
break;
}

else cout<<"not found!"<<endl;
}
return 0;
}

[解决办法]

C/C++ code
#include <iostream>using namespace std;int main(){    int i,num;    int list[10]={1,3,5,7,9,13,15,17,19,21};    cin>>num;    for(i=0;i<10;i++)    {        if(list[i]==num){            break;        }    }    if(i>=10)        cout<<"not found!"<<endl;    else        cout<<"Pos is "<<i+1<<endl;    return 0;}
[解决办法]
看楼主给出的数组已经从小到大排好了序,那么用二分查找法效率应该会更高一些,下面的代码供参考:
C/C++ code
#include <iostream>using namespace std;int main(){    int i,num;    int list[10]={1,3,5,7,9,13,15,17,19,21};    cin>>num;    int start = 0;    int end = sizeof(list) / sizeof(list[0]) - 1;    while(true)    {        int temp = (start + end) / 2;        if(end - start == 1)        {            if(list[start] == num)            {                cout << "Position is " << start << endl;                 break;            }            else if(list[end] == num)            {                cout << "Position is " << end << endl;                 break;            }            else            {                cout << "Not found." << endl;                break;            }        }        if(list[temp] == num)        {            cout << "Position is " << (start + end) / 2 << endl;            break;        }        if(list[temp] < num)        {            start = temp;        }        else        {            end = temp;        }    }    return 0;} 

读书人网 >C++

热点推荐