顺序查找是最简单的一种查找方法。其基本思想是:从线性表的一端开始,依次将每个记录的关键字与给定值进行比较,若某个记录的关键字等于给定值,表示查找成功,返回记录序号;若将线性表中所有记录都比较完,仍未查找到关键字与给定值相等的记录,则表示查找失败,返回一个查找失败的标志值。
#include<iostream> using namespace std; #define Len 8 int source[]={69,65,34,57,93,66,28,54}; int SeqSearch(int s[],int n,int key) { int i; for(i=0;i<n&&s[i]!=key;i++) ;//空循环,不能忘记加; if(i<n) return i; else return -1;//返回失败标志值 }
以上循环我们发现每循环一次都要进行两个比较(i<n&&s[i]!key),如果静态查找表中的数据很多,两次比较则需要很长时间,程序效率会很低,这是可以对程序进行改进,在创建静态查找表的时候,在该表末端添加一个空的单元格用来保存关键字。这要就确保表中有一个与关键字相同的数据,就不需要使用条件i<n进行判断。
//改进代码 #include<iostream> using namespace std; #define Len 8 int source[Len+1]={69,65,34,57,93,66,28,54}; int SeqSearch(int s[],int n,int key) { int i; for(i=0;s[i]!=key;i++) ;//空循环,不能忘记加; if(i<n) return i; else return -1;//返回失败标志值 } int main() { int key,i,pos; source[Len]=key; pos=SeqSearch(source,Len,key); }
顺序查找优点:算法简单
缺点:效率低
顺序查找(Sequential Search)
于 2022-01-30 14:37:09 首次发布