Java有序表查找:折半查找、二分查找、差值查找和斐波那契查找
Java有序表查找:折半查找、二分查找、差值查找和斐波那契查找
(1)折半查找法:又称二分查找,是最经典的有序表查找,它的前提是线性表中的记录必须是有序的(通常从小到大排列),线性表采用顺序存储的方式;其基本思路是:将关键字key与中间记录((low+high)/2)进行比较;若相等,则查找成功;若关键字小于中间记录,则说明关键字可能在下半区;若大于,则说明关键字可能在上半区;不断重复上述过程,直到查找成功或失败;
package javatest1;
public class JavaTest1 {public static void main(String[] args) {int[] num = { 1, 2, 3, 4, 5, 6 };//必须有序int index = Binary_Search(num, 5);System.out.print(index);}/* num:有序表(由小到大排列)* key:要查找的关键字* return:还回查找到关键字的下标,没有找到则还回-1*/private static int Binary_Search(int[] num, int key) {int low, high, mid;low = 0;high = num.length - 1;while (low <= high) {mid = (low + high) / 2;if (key < num[mid])high = mid - 1;else if (key > num[mid])low = mid + 1;else// 如果等于则直接还回下标值return mid;}return -1;}
}
package javatest1;
public class JavaTest1 {public static void main(String[] args) {int[] num = { 1, 2, 3, 4, 5, 6 };// 必须有序int index = Insert_Search(num, 5);System.out.print(index);}/** num:有序表(由小到大排列) key:要查找的关键字 return:还回查找到关键字的下标,没有找到则还回-1*/private static int Insert_Search(int[] num, int key) {int low, high, mid;low = 0;high = num.length - 1;while (low <= high) {// mid = (low + high) / 2;//二分查找mid = low + (high - low) * (key - num[low])/ (num[high] - num[low]); // 插值查找if (key < num[mid])high = mid - 1;else if (key > num[mid])low = mid + 1;else// 如果等于则直接还回下标值return mid;}return -1;}
}
Java有序表查找:折半查找、二分查找、差值查找和斐波那契查找相关推荐
- 对长度为200的有序表进行二分查找_程序员常用的查找算法(顺序、二分、插值、分块、斐波那契)...
顺序查找 基本思想 属于线性查找和无序查找,从一端开始顺序扫描,直到找到与目标值value相等的元素. 这是最基本的查找方法,也是时间复杂度最高的查找算法. 在数据过多时,这种方法并不适用. 代码实现 ...
- java 二分搜索获得大于目标数的第一位_程序员常用查找算法(顺序、二分、插值、分块、斐波那契)...
顺序查找 基本思想 属于线性查找和无序查找,从一端开始顺序扫描,直到找到与目标值value相等的元素. 这是最基本的查找方法,也是时间复杂度最高的查找算法. 在数据过多时,这种方法并不适用. 代码实现 ...
- 【Java数据结构与算法】第九章 顺序查找、二分查找、插值查找和斐波那契查找
第九章 顺序查找.二分查找.插值查找和斐波那契查找 文章目录 第九章 顺序查找.二分查找.插值查找和斐波那契查找 一.顺序查找 1.基本介绍 2.代码实现 二.二分查找 1.基本介绍 2.代码实现 三 ...
- JAVA数据结构与算法之斐波那契查找(黄金分割点)
前言 最近面临毕业就业,在复习数据结构与算法,为了更好地掌握,加深印象,所以决定写一些博客来知识复现. 温馨提示:这篇博客可能不适合刚学数据结构的新手. 算法的简单介绍 黄金分割点是指把一条线段分割为 ...
- 斐波那契查找(黄金分割法)超详细详解
斐波那契查找思路 说句实在话,这个斐波那契查找我看了不下5遍才理解他的思路和代码,因为它里面的值太多,不好理解容易绕晕,所以我给大家用自己的理解讲一下 什么是斐波那契 要想学会斐波那契查找,首先你得知 ...
- 007.斐波拉契查找算法
1. 斐波拉契查找算法 斐波拉契查找算法也称为黄金分割查找算法,它是在折半查找算法的基础上根据斐波拉契数列进行分割.折半法是取排序好的中间值进行分割,而斐波拉契查找算法是根据黄金分割点进行分割. 黄金 ...
- 【数据结构与算法】插值查找算法、斐波那契查找算法(黄金分割法)的介绍和程序实现
目录 1. 插值查找算法 1.1 插值查找算法的介绍 1.2 插值查找算法的程序实现 2. 斐波那契查找算法 2.1 斐波那契查找算法的介绍 2.2 斐波那契查找算法的程序实现 1. 插值查找算法 1 ...
- Java数据结构之二分查找/插值查找/斐波那契查找
目录 一.简单的线性查找 1.问题引出 2.代码实现 二.二分查找算法 1.基本介绍 2.代码实现(递归) 3.代码实现(非递归) 4.二分查找的功能完善 三.插值查找 1.简单介绍 2.代码实现(递 ...
- 算法:静态查找表(Static Search Table)(顺序查找、二分查找、插值查找、斐波纳契查找)
转载 BinarySearch.java /*** @ClassName BinarySearch* @Description 折半查找** 可以使用插值公式将折半查找性能优化** 只需将其中的 mi ...
最新文章
- hdu 1213 How Many Tables ([kuangbin带你飞]专题五 并查集)
- 银河麒麟4安装MySQL8_2020-03-24 linux 安装mysql8.0
- 选择一线一张床还是小城一套房?
- 什么相片可以两张弄成一张_手机修图教程 | 如何不着痕迹地给相片添加优雅手写字体?...
- 常见的几种最优化方法
- oracle adg 改密码,Oracle ADG数据库切换
- NotificationManager: notifyAsUser: tag=null, id=6, user=UserHandle{0}
- STM32的IAP在线升级的源码中的地址解读
- 基于tkinter的九型人格测试系统介绍
- 弘辽科技:你吃的粽子,撑起百亿市场
- 【Excel 教程系列第 15 篇】Excel 中的简单排序(升序 / 降序)、多条件排序、按颜色排序、自定义排序、以及巧用“升序“制作工资条
- python代码变成so
- python爬虫之获取谷歌浏览器所有cookie
- html meta标签‘http-equiv’属性的详解用法
- 第7章第24节:双图排版:两张图片的一大一小对比排版 [PowerPoint精美幻灯片实战教程]
- 筛选状态下进行复制粘贴为数值
- java读取本地图片_java 怎么才能读取本地磁盘中的图片并传给前端(URL)
- 微软研究院洪小文:人工智能到底是个什么东西?我们应该怎样看待它?
- Flask开发成语接龙游戏,以后闲了手机玩玩自己写的游戏吧!
- HTML5期末大作业:静态购物网站设计——静态购物网站模板11页(前台+后台) HTML+CSS+JS
热门文章
- 垂直居中重要方法理解---重点是方法三
- javase中的super、this和protected关键字
- 《Ext JS高级程序设计》节选: 一个结合DataWrite和RowEditor的Grid示例(2)
- vue.js 三种方式安装--npm安装
- (4)pyspark---dataframe清理
- centos6系列版本防火墙图形化设置
- 程序员也要寻找贸易的机会,要参加研讨会
- Windows Phone(三)WP7版 记账本 开发(使用SQLite数据库)
- Java,想说爱你真不容易
- 时间、时间戳相关小结 - iOS