拉格朗日插值查找法
来源:互联网 发布:mac 无法切换其他用户 编辑:程序博客网 时间:2024/05/20 02:23
#include<iostream>
using namespace std;
int search(const int*, int, int);
int main()
{
int arr[6] = {1,2,3,4,10,20};
int find = search(arr, 6, 10);
if(find == -1)
cout << "没有找到!" << endl;
else
cout << arr[find] << endl;
return 0;
}
int search(const int* arr, int size, int key)
{
int tou, wei, zhong;
tou = 0;
wei = size - 1;
while(tou <= wei)
{
zhong = tou + (wei - tou) * (key - arr[tou]) / (arr[wei] - arr[tou]); //拉法朗日算法
if(key == arr[zhong])
{
return zhong;
}
else if(key < arr[zhong])
{
wei = zhong - 1;
}
else
tou = zhong + 1;
}
return -1;
using namespace std;
int search(const int*, int, int);
int main()
{
int arr[6] = {1,2,3,4,10,20};
int find = search(arr, 6, 10);
if(find == -1)
cout << "没有找到!" << endl;
else
cout << arr[find] << endl;
return 0;
}
int search(const int* arr, int size, int key)
{
int tou, wei, zhong;
tou = 0;
wei = size - 1;
while(tou <= wei)
{
zhong = tou + (wei - tou) * (key - arr[tou]) / (arr[wei] - arr[tou]); //拉法朗日算法
if(key == arr[zhong])
{
return zhong;
}
else if(key < arr[zhong])
{
wei = zhong - 1;
}
else
tou = zhong + 1;
}
return -1;
}
//优点:对于数据均匀容器来说,拉格朗日插值查找法效率非常高,但是对于数据不均匀的容器,比如说一个容器里面有100个数字,前99个为1-99,最后一个为100000,如果我们要查找99的话,要循环99次才行
0 0
- 二分查找法 与 拉格朗日插值查找法
- 二分查找法与拉格朗日插值查找法
- 拉格朗日插值查找法
- 查找----二分查找法
- 拉格朗日插值查找法-C描述
- 二分查找与拉格朗日插值查找
- 二分法查找和拉格朗日插值查找
- 二分查找法,查找string
- 数据查找---分块查找法
- 静态查找:顺序查找和折半查找法
- 二分查找法和顺序查找法
- 线性查找法&二分查找法
- 折半查找法(二分查找法)
- 顺序查找法与二分法查找
- 查找算法之分块查找法
- javascript二分查找法(折半查找)
- 利用二分查找法查找数据
- 折半查找法(二分查找)
- swift学习心得
- java中重写、覆盖,重载三者的区别
- Hadoop Streaming编程实例
- 黑马程序员-JAVASE入门( IO流 )
- 连通图染色
- 拉格朗日插值查找法
- 工作流程及常见问题,想做工作认真看完
- eclipse快捷键调试总结
- TCP为什么要三次握手
- U盘安装完美的WIN7操作系统教程
- Hadoop实战实例
- Sum Root to Leaf Numbers--LeetCode
- MySql Study之--MySql日志管理
- java_web初学笔记之<java编程规范>