一.折半法查找的总结(这算法很好理解,但我花了好久琢磨他有啥用.....)

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类的总结的更多相关文章

  1. "二分法"-"折半法"-查找算法-之通俗易懂,图文+代码详解-java编程

    转自http://blog.csdn.net/nzfxx/article/details/51615439 1.特点及概念介绍 下面给大家讲解一下"二分法查找"这个java基础查找 ...

  2. 旧书重温:0day2【3】 详细解读PEB法 查找kener32地址

    题外话:上一篇文章中的 PEB法查找kerner32地址的方法 对TEB.PEB .PE结构 知识要求很高,确实在写汇编代码时候小编 感觉自己能力,信手啪啪一顿乱撸,结果一运行,非法访问了,没办法翻阅 ...

  3. php实现两分法查找

    两分法查找的前提:顺序方式存储,而且必须是排好序 直接上代码: function search($array, $target, $low = 0, $high = 0){ $len = count( ...

  4. Java实现二分法(折半)查找数组中的元素

    二分查找 算法思想:又叫折半查找,要求待查找的序列有序.每次取中间位置的值与待查关键字比较,如果中间位置的值比待查关键字大,则在前半部分循环这个查找的过程,如果中间位置的值比待查关键字小,则在后半部分 ...

  5. 链地址法查找成功与不成功的平均查找长度ASL

    晚上,好像是深夜了,突然写到这类题时遇到的疑惑,恰恰这个真题只让计算成功的ASL,但我想学一下不成功的计算,只能自己来解决了,翻了李春葆和严蔚敏的教材没有找到相关链地址法的计算,于是大致翻到两篇不错的 ...

  6. 【ASP.NET Core】依赖注入高级玩法——如何注入多个服务实现类

    依赖注入在 ASP.NET Core 中起中很重要的作用,也是一种高大上的编程思想,它的总体原则就是:俺要啥,你就给俺送啥过来.服务类型的实例转由容器自动管理,无需我们在代码中显式处理. 因此,有了依 ...

  7. 零基础学习java------day12------数组高级(选择排序,冒泡排序,二分查找),API(Arrays工具类,包装类,BigInteger等数据类型,Math包)

    0.数组高级 (1)选择排序 它的工作原理是每一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,然后,再从剩余未排序元素中继续寻找最小(大)元素,然后放到已排序序列的起始位置 ...

  8. Unity3D 查找Update函数体为空的类

    如果是大项目,有很多Update空跑还是多少有些效率损耗,那我们就把他们都找出来. 先引用Mono.Cecil //代码 using UnityEngine; using UnityEditor; u ...

  9. 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 ...

随机推荐

  1. TortoiseGit为github账号添加SSH keys,解决pull总是提示输入密码的问题

    每次同步或者上传代码到githun上的代码库时,需要每次都输入用户名和密码,这时我们设置一下SSH key就可以省去这些麻烦了.若果使用TortoiseGit作为github本地管理工具,Tortoi ...

  2. 【Tomcat】Tomcat相关设计模式分析

    门面模式 门面模式在 Tomcat 中有多处使用,在 Request 和 Response 对象封装中.Standard Wrapper 到 ServletConfig 封装中.Application ...

  3. python面向对象学习(三)私有属性和私有方法

    目录 1. 应用场景和定义方式 2. 伪私有属性和私有方法 在java或者其他的编程语言中,使用访问修饰符来限制属性和方法的访问级别,一般有public.protected.default.priva ...

  4. Netty 系列九(支持UDP协议).

    一.基础知识 UDP 协议相较于 TCP 协议的特点: 1.无连接协议,没有持久化连接:2.每个 UDP 数据报都是一个单独的传输单元:3.一定的数据报丢失:4.没有重传机制,也不管数据报是否可达:5 ...

  5. Docker 系列五(Docker Compose 项目).

    一.概念 Docker Compose 是官方编排项目之一,负责快速的部署分布式应用.它允许用户通过一个单独的 docker-compose.yml 模板文件(YAML格式)来定义一种相关联的应用容器 ...

  6. Your local changes to the following files would be overwritten by merge:

    在服务器改动之后,用sourcetree提交会产生冲突,解决办法:

  7. 前端入门5-CSS弹性布局flex

    本篇文章已授权微信公众号 dasu_Android(大苏)独家发布 声明 本系列文章内容全部梳理自以下四个来源: <HTML5权威指南> <JavaScript权威指南> MD ...

  8. Locust 安装

    环境:CentOS 7.4,python2.7.5 # 安装 pip yum -y install python-pip # 安装 locustio pip install locustio mkdi ...

  9. odoo:开源 ERP/CRM 入门与实践

    看了这张图,或许你对odoo有了一些兴趣. 这次就是和大家一起交流开源ERP/CRM系统:odoo 对以下读者有帮助:研发.产品.项目.市场.服务.运营.管理等. 一.背景趋势 社交网络.电商O2O: ...

  10. 显示Linux进程打开了哪些文件? 用lsof命令

    1.lsof abc.txt --> 显示开启文件 abc.txt的进程. 2.lsof -c abc  ---> 显示abc进程现在打开的文件. 3.lsof -c -p 1234 -- ...