查找--摘要
静态查找表:只做查找操作的查找表
动态查找表:在查找过程中还做插入和删除数据元素的操作
查找时可改变数据元素之间的关系以获得较高的查找性能,将查找集合组织成表、树结构。也即是从数据的存储方式作出改进。
还有从算法层面做出改进:二分、插值、斐波那契查找等
顺序查找:线性查找,从表的第一个逐个开始和待查找元素比较,直到最后一个(暴力破解)
//C
//a为待查数组,n为待查数组长度,key为待查找值
int Sequential_Search(int *a,int n, int key)
{
int i;
for(i=1;i<=n,i++)
{
if(a[i]==key)
return i;
}
return 0;
}
顺序查找的优化
不需要每次让i和n比较 ,在数据较多时效率提升
//C
int Sequential_Search2(int *a,int n, int key)
{
int i;
a[0]=key;
i=n;
while(a[i]!=key)
{
i--;
}
return i;
}
时间复杂度:O(n)
空间复杂度:O(1)