查找--摘要
靜態查找表:只做查找操作的查找表
動態查找表:在查找過程中還做插入和刪除數據元素的操作
查找時可改變數據元素之間的關係以獲得較高的查找性能,將查找集合組織成表、樹結構。也即是從數據的存儲方式作出改進。
還有從算法層面做出改進:二分、插值、斐波那契查找等
順序查找:線性查找,從表的第一個逐個開始和待查找元素比較,直到最後一個(暴力破解)
//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)