查找算法
Be_With_I
这个作者很懒,什么都没留下…
展开
-
斐波那契查找算法
f[k]-1 = f[k-1]-1 + f[k-2] - 1 +1 这个公式的由来 因为我们要找到分割的点, 用-1 我们可以将 整体分成三段了。 我们要用的是数据的长度。 也就是要 f[k-1] 但是我们mid 的取值其实是下标。所以是 f[k-1] -1; 先创建了 f[k]这么个数列,然后要让,数组的长度 = f[k]-1这样我们才能分割 ...原创 2020-02-17 23:47:01 · 138 阅读 · 0 评论 -
插值查找算法
原来我们二分查找算法的时候是 sta+1/2(end-sta) 现在这个插值是 sta+(value-arr[sta])/arr[end]-arr[sta]* (end-sta) 通过比较,其实就是前边的 1/2变成了 那个值-最小值在最大值-最小值的比例 注意:退出的条件。 package a; public class InsertSearch { public static ...原创 2020-02-16 17:42:00 · 152 阅读 · 0 评论 -
二分查找的一个小优化
返回结果换成list 在找到这个结果后,把其加入list 并,继续找 package a; import java.util.ArrayList; import java.util.Arrays; public class BaniarySearchDuplicate { public static void main(String[] args) { int[] ar...原创 2020-02-16 11:04:18 · 177 阅读 · 0 评论 -
二分查找算法
这个算法要求数据必须是排好序的 这次用的是递归实现。 package a; public class BaniarySearch { public static void main(String[] args) { int[] arr = {9, 14, 34, 52, 80, 876}; int value = 877; int sta ...原创 2020-02-15 17:58:21 · 124 阅读 · 0 评论 -
线性查找算法
就是遍历查找。用查找的值和数组逐一比较 package a; public class LineSeek { public static void main(String[] args) { // int var = 8; // int [] arr = new int[var]; // for (int i = 0; i < arr.le...原创 2020-02-15 17:26:42 · 126 阅读 · 0 评论