首页 > 代码库 > 费氏查找(求高人讲解)
费氏查找(求高人讲解)
java实现
package sort;public class FibonacciSearch { public static int search(int[] number, int des) { int[] fib = createFibonacci(number.length); int x = findX(fib, number.length+1, des); int m = number.length - fib[x]; x--; int i = x; if(number[i] < des) i += m; while(fib[x] > 0) { if(number[i] < des) i += fib[--x]; else if(number[i] > des) i -= fib[--x]; else return i; } return -1; } private static int[] createFibonacci(int max) { int[] fib = new int[max]; for(int i = 0; i < fib.length; i++) { fib[i] = Integer.MIN_VALUE; } fib[0] = 0; fib[1] = 1; for(int i = 2; i < max; i++) fib[i] = fib[i-1] + fib[i-2]; return fib; } private static int findX(int[] fib, int n, int des) { int i = 0; while(fib[i] <= n) i++; i--; return i; } public static void main(String[] args) { int[] number = {1, 4, 2, 6, 7, 3, 9, 8}; QuickSort.quickSort(number); int find = FibonacciSearch.search(number, 3); if(find != -1) System.out.println("找到數值於索引 " + find); else System.out.println("找不到數值"); } }
费氏查找(求高人讲解)
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。