拉格朗日插值查找法-C描述

与二分查找法相似,也是必须先进行排序,对比二分查找法只修改一行代码


int  binarySearch(void *p, int key ,int size ) {
	int *arr = p;
	//mid = (high + low) / 2  mid = hight + (low - high)* 一个比例
	int count = 0;					// mid = hight + (low - high)* 1.0 * key - arr[high]/arr[low]-arr[high]  //拉格朗日插值
	for (int high = size - 1 , low = 0 ,  mid = 0;  low <= high;
		mid = (high + low) / 2		// 2分查找法
		//mid = high + (low - high)* 1.0 *( key - arr[high]) / (arr[low] - arr[high])//拉格朗日插值
		)
	{
		count++;
		printf("最大值 %d  最小值 %d  中间值 %d  %d次查询\n", high, low, mid, count);
		int mindValue = arr[mid];
		if (mindValue == key) 
			return 1;
		else if (mindValue>key) 
			high = mid - 1;
		else 
			low = mid + 1;
	}
	return 0;
}


评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值