二分查找与拉格朗日差值查询
来源:互联网 发布:java窗口全局变量 编辑:程序博客网 时间:2024/05/17 07:27
一、我们先写一个主方法:
public static void main(String[] args) { int [] myint=new int [1024]; for(int i=1;i<=1024;i++) { myint[i-1]=i; } System.out.println("数字在"+binsearchX(myint,1019)+"之后"); //1024 2^10 }二、二分查找如下:
public static int binsearch(int []arr,int findnum) { int max=arr.length-1; int min=0; //int mid=(max+min)/2; //int mid=min+ (max-min)/2; int mid=min+ (max-min)*(1/2); int times=1; while(arr[mid]!=findnum) { times++; if(findnum>arr[mid]) { min=mid+1; } else if(findnum< arr[mid]) { max=mid-1; } mid=(max+min)/2; if(max<min) { return -1; } } System.out.println( times+"次"); return mid; }三、拉格朗日差值查找
public static int binsearchX(int []arr,int findnum) { int max=arr.length-1; int min=0; //int mid=(max+min)/2; // int mid=min+ (max-min)/2; // int mid=min+ (max-min)*(1/2); // int mid=min+ (max-min)*( mid-min/max- min );//二分查找法的比例 int mid = (int) (min+ (max-min)*( (findnum-arr[min])*1.0/(arr[max]- arr[min] ) )); // int mid=min+ (max-min)*(1/2); int times=1; while(arr[mid]!=findnum) { times++; if(findnum>arr[mid]) { min=mid+1; } else if(findnum< arr[mid]) { max=mid-1; } mid=(max+min)/2; if(max<min) { return -1; } } System.out.println( times+"次"); return mid; }小结:拉格朗日差值查找是基于二分查找的基础上,仅仅是在对于中值mid的赋值的处理上产生了差异
二分查找:
int mid=min+ (max-min)*(1/2);
拉格朗日中值查找:
int mid = (int) (min+ (max-min)*( (findnum-arr[min])*1.0/(arr[max]- arr[min] ) ));但后者大大提高了查找效率,仅一次就能实现要查找的数据。
0 0
- 二分查找与拉格朗日差值查询
- (1.3.2.1)查找:二分查找与差值查找
- 二分查找的改进--差值查找
- 二分查找的改进 差值查找(low<=high,这与快排low<high)
- Java有序表查找:折半查找、二分查找、差值查找和斐波那契查找
- POJ 3579(二分查找差值中间值)
- 有序查找算法(二分查找、差值查找、斐波那契查找)
- 二分排序与二分查找
- 二分排序与二分查找
- 二分排序与二分查找
- 顺序查找与二分查找
- 顺序查找与二分查找
- 顺序查找与二分查找
- 二分查找与拉格朗日插值查找
- 顺序查找与二分查找
- 算法--查找--差值查找
- 数组与二分查找
- 二分查找 与冒泡
- Java - How to create new Entry (key, value)
- poj1149 PIGS
- Redis 学习笔记(二)
- android 反编译、反调试方法总结
- Googlel离线安装
- 二分查找与拉格朗日差值查询
- 一次性配置OpenCV的正确姿势
- JAVA经典算法50题
- Decode segfault errors in dmesg
- jersey学习笔记3-集成服务
- 第十六周项目1--验证算法--(7)归并排序
- .net三层架构
- 关于static代码块的初始化问题:
- 帝都八十中几日游来着……(16.12.02-16.12.10)