二分查找
复杂度:时间复杂度 O(log2n),空间复杂度O(n)
1 | //递归与非递归 |
斐波那契查找
黄金分割:
黄金比例又称黄金分割,是指事物各部分间一定的数学比例关系,即将整体一分为二,较大部分与较小部分之比等于整体与较大部分之间,其比值约为1:0.618 或1.618:1
然后我们会发现,随着斐波拉契数列的递增,前后两个数的比值会越来越接近0.618,利用这个特性,我们就可以将黄金比例运用到查找技术中。
基本思想:
也是二分查找的一种提升算法,通过运用黄金比例的概念在数列中选择查找点进行查找,提高查找效率,同样地,斐波拉契查找也属于一种有序查找算法。
斐波拉契查找与折半查找相似,他是根据斐波拉契序列地特点对有序表进行分割地,他要求开始表中记录地个数为某个斐波拉契数小1,即n = F(k) - 1;
开始将k值与第F(k-1)位置的记录进行比较(即mid = F(k-1) - 1), 比较结果:
- 相等
- >, low = mid+1, k-=2;
说明:low=mid+1说明待查找的元素在[mid+1,high]范围内,k-=2 说明范围[mid+1,high]内的元素个数为n-(F(k-1))= Fk-1-F(k-1)=Fk-F(k-1)-1=F(k-2)-1个,所以可以递归的应用斐波那契查找。
- <,high=mid-1,k-=1。
说明:low=mid+1说明待查找的元素在[low,mid-1]范围内,k-=1 说明范围[low,mid-1]内的元素个数为F(k-1)-1个,所以可以递归 的应用斐波那契查找。
复杂度分析:最坏情况下,时间复杂度为O(log2n),且其期望复杂度也为O(log2n)。
1 |
|