查找在实际应用中也是最为常见的。通常我们要在一个集合中查找某一个数或多个数,这个集合称为查找表。查找表分为静态查找表和动态查找表。
静态查找表:在查找表中查询某个“特定的”元素,查找表的大小不会改变,即仅限于查找某个元素,查找表不会被修改。
动态查找表:在查找过程向查找表中删除或插入一个元素,即若在查找过程中同时插入查找表中不存在的元素,或者从查找表中删除已存在的某个元素。
本小节整理的是静态查找表几种典型的查找算法。
1、顺序表的查找
原理:从表中最后一个记录开始,逐个进行记录的关键词与给定值的比较,若某个记录的关键词与给定值相等,则查找成功;反之,若直到第一个记录,其关键词与给定值都不相等,则查找不成功。
算法实现:
int SearchSeq(int arr[],int key){//arr为查找表,key为待查找的元素
for(int i=arr.length-1;arr[i]!=key;--i);
return i;//返回查找表中的下标;若i=-1,则表示没有查找到
}
根据上述算法可知,若查找元素不在查找表中,则需要比较n次,因而运行时间最坏情况是O(n)。