r[i](i=0,...,n-1)
与x比较,如果比较成功则返回i,否则返回0//main1.cpp
int find(vector<int>&vec,const int x){
for (vector<int>::size_type i = 0; i < vec.size();i++){
if(vec[i]==x){
return i;
}
}
return -1;
}
int main(int argc,char**argv){
<int> vec = {1, 2, 3, 4, 5};
vector<< find(vec, 4) << endl;//3
cout << find(vec, -4) << endl;//-1
cout return 0;
}
最好的情况为一次查找成功,最坏的情况为n次查找成功
假设每个关键词被查找的概率均等,即pi=1/n
,查找第i个关键字需要比较i次成功,则查找成功的平均查找长度为
如果查找的内容不存在,则每次都会比较n次,时间复杂度也为O(n)
显然是O(1)
优化后的算法,时间复杂度数量级没有变,仍为O(n),但是比较的次数变少了,省去了判断判断下标范围判断
//arr数据从下标1开始存放
int find(int arr[],int n,int x){
int i;
[0]=x;//将要查找的元素放入下标0位置
arrfor(i=n;arr[i]!=x;i--);//从最后一个位置开始反向找
return i;//如果找到了目标则不是返回0 没找到则返回0
}
顺序查找就是暴力穷举,数据量很大时,查找效率比较低