查一波查找算法,方便以后准备找工作
平均查找长度
顺序查找
一种无序查找方法
平均查找长度为:(n+1)/2
时间复杂度为O(n)
int sequencceSearch(int a[], int value,int n)
{
int i;
for (i=0;i<n;i++)
if(a[i]==value)
return i;
return -1;
}
二分查找/折半查找
有序查找方法。
时间复杂度O(logn)
int binarySearch(int a[],int value,int n)
{
int low,high,mid;
low=0;
high=n;
mid=(low+high)/2;
while(low<=high)
{
if(a[mid]<value)
low=mid+1;
else if(a[mid]>value)
high=mid-1;
else
return mid;
mid=(low+high)/2;
}
return -1;
}
二叉树查找
二叉查找树(二叉排序树)的左子树节点都小于根节点,右子树的值都大于根节点,且任意左右子树也是二叉查找树。
中序遍历二叉查找树可以得到有序数列。
二叉查找树可以进行查找、插入、删除等操作。他的查找和插入操作的时间复杂度是O(logn)
分块查找
哈希查找
以空间换时间