学习回顾算法(插值查找算法)
来源:互联网 发布:centos 离线安装mysql 编辑:程序博客网 时间:2024/05/01 08:07
插值查找算法概述
插值查找算法,是二分法查找算法的改进。将查找点的选择改为自适应选择,可以提高查找效率。
算法注意点和二分法查找一样,都需要列表先排好序。
插值查找算法实现
1、golang实现
package mainimport ( "fmt")func InsertionSearch(values []int, key int) int { if len(values) == 0 || key > values[len(values)-1] || key < values[0] { return -1 } front := 0 end := len(values) - 1 mid := front + ((key-values[front])/(values[end]-values[front]))*(end-front) for front < end && values[mid] != key { if values[mid] > key { end = mid - 1 } else { front = mid + 1 } mid = front + ((key-values[front])/(values[end]-values[front]))*(end-front) if mid > end { mid = end } } if values[mid] == key { return mid } return -1}func main() { values := []int{1, 3, 5, 7, 9, 11, 13, 15, 17, 19, 21, 23, 25, 27, 29, 31, 33, 35, 37, 39} fmt.Println(values) index := InsertionSearch(values, 1) fmt.Println(index) index = InsertionSearch(values, 35) fmt.Println(index) return}
结果
[1 3 5 7 9 11 13 15 17 19 21 23 25 27 29 31 33 35 37 39]017
阅读全文
0 0
- 学习回顾算法(插值查找算法)
- 插值查找算法
- 插值查找算法
- 插值查找算法
- 插值查找算法
- 学习回顾算法(顺序查找算法)
- 学习回顾算法(二分法查找)
- 算法-01-二分查找/插值查找
- 数据结构与算法(11)插值查找
- 【数据结构与算法】【查找】插值查找的代码实现
- c查找算法——插值查找
- 算法:静态查找表(Static Search Table)(顺序查找、二分查找、插值查找、斐波纳契查找)
- 查找算法小结:顺序查找、 二分查找、斐波那契查找 、插值查找
- 学习回顾算法(归并排序算法)
- 学习回顾算法(快速排序算法)
- 学习回顾算法(堆排序算法)
- 学习回顾算法(希尔排序算法)
- 学习回顾算法(基数排序算法)
- Linux centos7环境下MySQL安装教程
- Linux指令用之记之-shell双引号单引号区别
- hadoop2.8.0 安装与环境搭建
- IMX.6Q 移植FFmpeg libx264软件编码 libmp3lame
- 对搜索的疑惑
- 学习回顾算法(插值查找算法)
- Git 的 4 个阶段的撤销更改
- 配置销售开票时结转销售成本
- RabbitMQ安装及配置
- Linux指令用之记之-sell算数运算
- String对象的创建
- Hibernate的学习之路三十一(HQL的投影查询)
- 不会说段子的程序员不是老司机
- 令程序员沮丧的那些事