关于折半法查找的一些总结以及ArrayList类的总结
一.折半法查找的总结(这算法很好理解,但我花了好久琢磨他有啥用.....)
1.实际意义
折半法查找主要是为了能够很快在一个数组中找出我们所需要的那个元素,与往常我们通过一个一个比较的方法不同,折半法大大减少了比较的次数,加快了效率,并且感觉在生活中也是有实际意义的,数组中元素少的时候当然看不太出来,但是若是有一个很大的数组,这种算法就很省事了。
2.注意事项
1.必须是顺序排序的一个数组,若不是我们需通过自己所学排序算法排一下
3.算法图解(定义一个数组a[])
这里我用的箭头相当于指针,感觉指针在数组中用的真是多。
min相当于指向最小的0索引,max指向最大的索引
mid=(max+min)/2指向这个公式所计算出的索引
如果我们要查找的是的话
1.算出mid 2.将a[mid]和所要查找的元素比(当总索引数为奇数时,不保留小数)
3.如果a[mid]大于15
就只剩下这些了,因为是顺序排序所以后面那些就被淘汰了,再次找mid最后若是找到了返回值即可(虽然我们一直在改变max,min所指向的元素但是数组中的索引数,以及元素的位置是不会变的。)小于那种情况其实也一样。
4.代码
package asdf; public class Research_By_Half { public static int research(int arr[],int num)
{
int max=arr.length-1;
int min=0;
int mid=0;
while(arr[min]<=arr[max])
{
mid=(max+min)/2;
if(arr[mid]<num)
{
min=mid+1;
}
else if(arr[mid]>num)
{
max=mid-1;
}else
{
return mid;
}
}
return -1;
}
public static void main(String[] args) {
int a[]= {1,2,5,8,45,99};
int b=research(a,45);
System.out.println(b);
} }
二.ArrayList类的使用
1.创建ArrayList类型变量时格式是(ArrayList<> (变量名)=new ArrayList<>())
2.用法
1.add()给集合添加元素
1.add(元素)就是添加 2.add(int 索引,元素)替换原位置元素并添加
2.size()查看集合长度
3.get()取出集合中某个元素.
4.set(int 索引,元素) 用于修改
5.clear()清空集合
关于折半法查找的一些总结以及ArrayList类的总结的更多相关文章
- "二分法"-"折半法"-查找算法-之通俗易懂,图文+代码详解-java编程
转自http://blog.csdn.net/nzfxx/article/details/51615439 1.特点及概念介绍 下面给大家讲解一下"二分法查找"这个java基础查找 ...
- 旧书重温:0day2【3】 详细解读PEB法 查找kener32地址
题外话:上一篇文章中的 PEB法查找kerner32地址的方法 对TEB.PEB .PE结构 知识要求很高,确实在写汇编代码时候小编 感觉自己能力,信手啪啪一顿乱撸,结果一运行,非法访问了,没办法翻阅 ...
- php实现两分法查找
两分法查找的前提:顺序方式存储,而且必须是排好序 直接上代码: function search($array, $target, $low = 0, $high = 0){ $len = count( ...
- Java实现二分法(折半)查找数组中的元素
二分查找 算法思想:又叫折半查找,要求待查找的序列有序.每次取中间位置的值与待查关键字比较,如果中间位置的值比待查关键字大,则在前半部分循环这个查找的过程,如果中间位置的值比待查关键字小,则在后半部分 ...
- 链地址法查找成功与不成功的平均查找长度ASL
晚上,好像是深夜了,突然写到这类题时遇到的疑惑,恰恰这个真题只让计算成功的ASL,但我想学一下不成功的计算,只能自己来解决了,翻了李春葆和严蔚敏的教材没有找到相关链地址法的计算,于是大致翻到两篇不错的 ...
- 【ASP.NET Core】依赖注入高级玩法——如何注入多个服务实现类
依赖注入在 ASP.NET Core 中起中很重要的作用,也是一种高大上的编程思想,它的总体原则就是:俺要啥,你就给俺送啥过来.服务类型的实例转由容器自动管理,无需我们在代码中显式处理. 因此,有了依 ...
- 零基础学习java------day12------数组高级(选择排序,冒泡排序,二分查找),API(Arrays工具类,包装类,BigInteger等数据类型,Math包)
0.数组高级 (1)选择排序 它的工作原理是每一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,然后,再从剩余未排序元素中继续寻找最小(大)元素,然后放到已排序序列的起始位置 ...
- Unity3D 查找Update函数体为空的类
如果是大项目,有很多Update空跑还是多少有些效率损耗,那我们就把他们都找出来. 先引用Mono.Cecil //代码 using UnityEngine; using UnityEditor; u ...
- 12.创建一个Point类,有成员变量x,y,方法getX(),setX(),还有一个构造方 法初始化x和y。创建类主类A来测试它。
package java1; public class Point { int x; int y; Point(int x,int y) { this.x = x; this.y = y; } pub ...
随机推荐
- MATLAB R2017a 进入主界面以后一直处于初始化状态的解决办法
自从前几天更新了win10系统,结果发现matlab不能用了,进入主界面一直初始化,没完没了. 网上说可能是许可证等问题,但经过尝试发现仍然无法解决问题. 仔细一想,发现win10系统的防火墙默默把它 ...
- 【Java每日一题】20170315
20170314问题解析请点击今日问题下方的“[Java每日一题]20170315”查看(问题解析在公众号首发,公众号ID:weknow619) package Mar2017; public cla ...
- 【Java每日一题】20170227
20170224问题解析请点击今日问题下方的“[Java每日一题]20170227”查看(问题解析在公众号首发,公众号ID:weknow619) package Feb2017; import jav ...
- Python3 系列之 面向对象篇
面向对象的三大特性:继承.封装和多态 Python 做到胶水语言,当然也支持面向对象的编程模式. 封装 class UserInfo(object): lv = 5 def __init__(self ...
- CSS table-layout 属性
设置表格布局算法: table { table-layout:fixed; } 所有浏览器都支持 table-layout 属性. 定义 tableLayout 属性用来显示表格单元格.行.列的算法规 ...
- bitnami_redmine3.3.0-1 问题及备份恢复
1. 服务不见了处理方法: 安装Bitnami Redmine之后,会生成5个与之相关的进程,分别是 redmineApache redmineMySQL redmineSubversion redm ...
- Salesforce 数据备份和恢复小知识
数据备份的类型 在Salesforce中可以使用多种API进行数据备份,它们是: REST API SOAP API Buik API Metadata API 数据备份有三种选择: 完全备份(Ful ...
- Python __exit__,__enter__函数with语句的组合应用
__exit__,__enter__函数with语句的组合应用 by:授客 QQ:1033553122 简介 设计对象类时,我们可以为对象类新增两个方法,一个是__enter(self)__,一个 ...
- Android星球效果实现
在项目中看着这个旋转效果挺炫的,就抽取出来做个记录.主要是使用CarrouselLayout 稍微修改 CarrouselLayout代码Demo下载z地址:GitHub https://github ...
- 转载:量化投资中常用python代码分析(一)
pandas的IO 量化投资逃不过数据处理,数据处理逃不过数据的读取和存储.一般,最常用的交易数据存储格式是csv,但是csv有一个很大的缺点,就是无论如何,存储起来都是一个文本的格式,例如日期‘20 ...