首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

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

2012-06-14 
有N个数的数列,要求从键盘上输入一个数,用顺序查找法查找该数是否存在数列中。如果该数存在数列中,则打印出

有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;} 

热点排行