写在前面:用于记录个人算法学习(计算机小白,算法菜鸟)
题目描述:
改进的顺序检索
算法1.2 Search(L,x)
输入:数组L[1..n],其元素按照从小到大排列,数 x。
输出:若 x 在L中,输出 x 的位置下标 j;否则输出0。
1. j←1
2. while j≤n and x>L[j] do j←j+1
3. if x<L[j] or j>n then j←0
4. return j
输入:n
数组L[1..n],其元素按照从小到大排列
数 x
输出:若 x 在L中,输出 x 的位置下标 j;否则输出0。
元素比较次数。
样例输入:13 0 7 8 10 13 16 25 27 64 86 88 90 99 16样例输出:6 7
代码:
#include<iostream>
using namespace std;
const int N = 1e5 + 7; //定义数组空间
int n,x;
int T[N];
int main(){
//获取输入元素
cin>>n;
for(int i=1;i<=n;i++){
cin>>T[i];
}
cin>>x;
//进入检索
int j=1,count=0;
while(j<=n && x>T[j]){
j++;
count++;
}
if(j>n || x<T[j]){
if(x<T[j]){
count++;
}
j=0;
count++;
}
else{
count+=2;
}
//输出结果
cout<<j<<endl;
cout<<count<<endl;
return 0;
}