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