查找算法

顺序查找:

太简单就不说了!


二分查找:

int BinSearch(const int Array[], int len/*数组长度*/, int key/*要找元素*/)
{//二分查找
	//采用分治的方法来查找,但是这个数组必需是有序的, 这个例子是升序排列
    int left; //当前查找长度中,最左边的下标
	int  right; //当前查找长度中,最右边的下标, right是超尾的下标
    int mid; //中间点的下标
    left = 0;
    right = len;
    while (left <= right) 
	{
        mid = (left + right) / 2; //中间下标等于左+右/2
        if (key < Array[mid])
		{//当关键字小于中间元素,把右下标设置为中间下标左侧的下标
            right = mid - 1;
        }
		else if (key > Array[mid])
		{//当关键字大于中间元素,把左下标设置为中间下标右侧的下标
            left = mid + 1;
        }
		else
		{//找到就返回
            return mid;
		}
    }//没有找到就返回-1
    return -1;
}


分块查找,这里说说概念,

 1  把集合分成多个 块, 后一个块的所有元素必需大于前一个块中的所有元素, 但是, 每个块中的元素可以不是有序的

 2  建立一个索引, 计录每个块的最大元素和每个块的首地址(块的开始下标)

 3  把关键字同每个块中最大的元素比较, 当满足 第n - 1块 < key < 第n块 就说明key在n - 1块中, 然后该块中进行顺序查找, 否则, 该集合中不存在该关键字元素


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值