【概述】
顺序查找是最基本的查找技术之一,其基本思想是:从数据结构线形表的一端开始,顺序扫描,依次将扫描到的结点关键字与给定值 k 相比较,若相等则表示查找成功;若扫描结束仍没有找到关键字等于 k 的结点,表示查找失败。
【复杂度分析】
对于 n 个记录的顺序表,查找第 i 个记录时,需要进行 n-i+1 次关键码的比较。
在查找成功时,有:
设每个记录的查找概率相等,则有:
故:
而当查找不成功时,需要 n+1 次比较。
所以,顺序查找的时间复杂度为 O(n)。
【源程序】
1.顺序表
int SequenceSearch(int a[], int value, int n){
int i;
for(i=0; i<n; i++)
if(a[i]==value)
return i;
return -1;
}
2.单链表
int SequenceSearch(Node<int> *first,int k){
Node *p=first->next;
int cnt=1;
while(p!=NULL&&p->data!=k){
p=p->next;
cnt++;
}
if(p->data==k)
return cnt;
return 0;
}