Java折半查找+API+一些方法

Java日报

部门: **大数据开发六部

姓名: cqmfx(阡陌飞絮)

日期: 2020.11.6

大纲

一、折半查找

二、API

三、API的一些方法

Java折半查找+API+一些方法

一、折半查找

1、概念

​ 二分查找也称折半查找(Binary Search),它是一种效率较高的查找方法。但是,折半查找要求线性表必须采用顺序存储结构,而且表中元素按关键字有序排列。

二分查找思路非常简单,由粗暴的遍历查找改为了将元素排序后不断的进行折半查找,将搜索的时间复杂度由O(N)降到了O(log2N)。

二分查找的思路与二叉查找树的查找过程完全相同,我们将一个经过排序的数组看做一棵平衡的二叉查找树,那么数组的中点便是树的根节点。折半后的中点是下一层子树的根节点,以此类推。我们通过不断的判断目标值与各树根节点的值的大小来决定下一步查找根节点的左子树还是右子树。

在实现时,我们可以维护两个指针left和right,指针之间的范围便是我们的查找范围。查找过程如下:

首先判断边界条件,left位置的值与right位置的值是否包含目标值,若包含则查找结束;

通过left与right的位置找到当前范围的中点mid,即mid的值为(left+right)/2;

如果mid的值便是target的值,查找结束;

如果left与right已经是相邻的元素,那么证明数组中没有目标值,查找结束;

如果目标值大于mid则在mid、right间继续查找,即将mid的值赋予left;

反之在left与mid间继续查找,即将mid的值赋予right;

2、实操

package com.xinzhi;

/**
 * 2020/11/6
 * @author cqmfx(阡陌飞絮)
 */
public class Binary {
    public static void main(String[] args) {
        int [] array = {1,2,3,5,7,6,88,16,43};
        System.out.println(binary(array,7));
    }

    public static int binary(int [] array,int temp){
        int low = 0;
        int high = array.length - 1;

        while (low <= high){
            int mid = (low + high)/2;

            if (temp == array [mid]){
                return mid;
            }else if (temp < array [mid]){
                high = mid - 1;
            }else{
                low = mid + 1;
            }
        }
        return -1;
    }
}

二、API

1、定义

API(Application Programming Interface,应用程序编程接口)是一些预先定义的函数,目的是提供应用程序与开发人员基于某软件或硬件的以访问一组例程的能力,而又无需访问源码,或理解内部工作机制的细节

Java支持 3 种注释,分别是单行注释、多行注释和文档注释。文档注释以/**开头,并以*/结束,可以通过 Javadoc 生成 API 帮助文档,Java 帮助文档主要用来说明类、成员变量和方法的功能

文档注释只放在类、接口、成员变量、方法之前,因为 Javadoc 只处理这些地方的文档注释,而忽略其它地方的文档注释

Javadoc 是 Sun 公司提供的一种工具,它可以从程序源代码中抽取类、方法、成员等注释,然后形成一个和源代码配套的 API 帮助文档。也就是说,只要在编写程序时以一套特定的标签注释,在程序编写完成后,通过 Javadoc 就形成了程序的 API 帮助文档。

API 帮助文档相当于产品说明书,而说明书只需要介绍那些供用户使用的部分

2、Javadoc标签

Javadoc 工具可以识别文档注释中的一些特殊标签,这些标签一般以@开头,后跟一个指定的名字,有的也以{@开头,以}结束。Javadoc 可以识别的标签如下表所示:

标签描述示例
@author标识一个类的作者,一般用于类注释@author description
@deprecated指名一个过期的类或成员,表明该类或方法不建议使用@deprecated description
{@docRoot}指明当前文档根目录的路径Directory Path
@exception可能抛出异常的说明,一般用于方法注释@exception exception-name explanation
{@inheritDoc}从直接父类继承的注释Inherits a comment from the immediate surperclass.
{@link}插入一个到另一个主题的链接{@link name text}
{@linkplain}插入一个到另一个主题的链接,但是该链接显示纯文本字体Inserts an in-line link to another topic.
@param说明一个方法的参数,一般用于方法注释@param parameter-name explanation
@return说明返回值类型,一般用于方法注释,不能出现再构造方法中@return explanation
@see指定一个到另一个主题的链接@see anchor
@serial说明一个序列化属性@serial description
@serialData说明通过 writeObject() 和 writeExternal() 方法写的数据@serialData description
@serialField说明一个 ObjectStreamField 组件@serialField name type description
@since说明从哪个版本起开始有了这个函数@since release
@throws和 @exception 标签一样.The @throws tag has the same meaning as the @exception tag.
{@value}显示常量的值,该常量必须是 static 属性。Displays the value of a constant, which must be a static field.
@version指定类的版本,一般用于类注释@version info

对两种标签格式的说明:

  • @tag 格式的标签(不被{ }包围的标签)为块标签,只能在主要描述(类注释中对该类的详细说明为主要描述)后面的标签部分(如果块标签放在主要描述的前面,则生成 API 帮助文档时会检测不到主要描述)。
  • {@tag} 格式的标签(由{ }包围的标签)为内联标签,可以放在主要描述中的任何位置或块标签的注释中。

Javadoc 标签注意事项:

  • Javadoc 标签必须从一行的开头开始,否则将被视为普通文本。
  • 一般具有相同名称的标签放在一起。
  • Javadoc 标签区分大小写,代码中对于大小写错误的标签不会发生编译错误,但是在生成 API 帮助文档时会检测不到该注释内容

3、 Java API 包

Java API 包说明
java.accessibility接口组件和助手技术的类和接口
java.appletJava Applet所需的类和接口
java.awt图形用户界面所需的类和接口
java.beansJava bean技术所需的类和接口
java.io系统输入/输出所需的类和接口
java.langjava语言编程的基础类和接口
java.math支持任意精度整数和任意精度小数的类和接口
java.naming访问命名服务器的类和接口
java.net网络应用的类和接口
java.rmi远程调用(RMI)的类和接口
java.security用于安全框架的类和接口
java.sql访问和处理数据源中数据的类和接口
java.text支持按与语言无关方式处理文本、数据、数字和消息的类和接口
java.util集合框架、事件模型、日期和时间机制、国际化等的类和接口
javax.serverletJava.serverlet所需的类和接口
javax.sound支持音频设备数字接口(MIDI)的类和接口
javax.swing扩充和增强基本图形用户界面功能的类和接口

4、导出API

1)在Tools一栏找到Generate JavaDos一项

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-rhWKWCAF-1604721638793)(E:\day++\day12\Java折半查找+API+一些方法.assets\image-20201106175655285.png)]

2)填编码

-encoding是java代码编码,-charset是对生成文档所用的编码。-windowtitle就是对应html的标签

-encoding UTF-8 -charset UTF-8 -windowtitle "test"

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-dnQEDgol-1604721638797)(E:\day++\day12\Java折半查找+API+一些方法.assets\image-20201106175953621.png)]

注意一定要填地址

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-qFwigMVm-1604721638800)(E:\day++\day12\Java折半查找+API+一些方法.assets\image-20201106180002761.png)]

3)点ok导出

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-o2Dwjn2k-1604721638806)(E:\day++\day12\Java折半查找+API+一些方法.assets\image-20201106180157311.png)]

4)完成

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-03SB5Dt3-1604721638808)(E:\day++\day12\Java折半查找+API+一些方法.assets\image-20201106180213164.png)]

三、API的一些方法

1、String的常用方法

charcharAt(int index) 返回指定索引处的 char
intcodePointAt(int index) 返回指定索引处的字符(Unicode 代码点)
intcodePointBefore(int index) 返回指定索引之前的字符(Unicode 代码点)
codePointCount(int beginIndex, int endIndex)返回此String的指定文本范围中的 Unicode 代码点数。
intcompareTo(String,anotherString) 按字典顺序比较两个字符串。
intcompareToIgnoreCase(String str) 按字典顺序比较两个字符串,不考虑大小写。
Stringconcat(String str)` 将指定字符串连接到此字符串的结尾。
booleancontains(CharSequence s) 当且仅当此字符串包含指定的 char 值序列时,返回 true。
booleancontentEquals(CharSequence cs)将此字符串与指定的CharSequence` 比较。
booleancontentEquals(StringBuffer sb)将此字符串与指定的StringBuffer` 比较。

2、Match

1xxxValue() 将 Number 对象转换为xxx数据类型的值并返回。
2compareTo() 将number对象与参数比较。
3equals() 判断number对象是否与参数相等。
4valueOf() 返回一个 Number 对象指定的内置数据类型
5toString() 以字符串形式返回值。
6parseInt() 将字符串解析为int类型。
7abs() 返回参数的绝对值。
8ceil() 返回大于等于( >= )给定参数的的最小整数,类型为双精度浮点型。
9floor() 返回小于等于(<=)给定参数的最大整数 。
10rint() 返回与参数最接近的整数。返回类型为double。
11round() 它表示四舍五入,算法为 Math.floor(x+0.5),即将原来的数字加上 0.5 后再向下取整,所以,Math.round(11.5) 的结果为12,Math.round(-11.5) 的结果为-11。
12min() 返回两个参数中的最小值。
13max() 返回两个参数中的最大值。
14exp() 返回自然数底数e的参数次方。
15log() 返回参数的自然数底数的对数值。
16pow() 返回第一个参数的第二个参数次方。
17sqrt() 求参数的算术平方根。
18sin() 求指定double类型参数的正弦值。
19cos() 求指定double类型参数的余弦值。
20tan() 求指定double类型参数的正切值。
21asin() 求指定double类型参数的反正弦值。
22acos() 求指定double类型参数的反余弦值。
23atan() 求指定double类型参数的反正切值。
24atan2() 将笛卡尔坐标转换为极坐标,并返回极坐标的角度值。
25toDegrees() 将参数转化为角度。
26toRadians() 将角度转换为弧度。
27random() 返回一个随机数。

3、Date

1boolean after(Date date) 若当调用此方法的Date对象在指定日期之后返回true,否则返回false。
2boolean before(Date date) 若当调用此方法的Date对象在指定日期之前返回true,否则返回false。
3Object clone( ) 返回此对象的副本。
4int compareTo(Date date) 比较当调用此方法的Date对象和指定日期。两者相等时候返回0。调用对象在指定日期之前则返回负数。调用对象在指定日期之后则返回正数。
5int compareTo(Object obj) 若obj是Date类型则操作等同于compareTo(Date) 。否则它抛出ClassCastException。
6boolean equals(Object date) 当调用此方法的Date对象和指定日期相等时候返回true,否则返回false。
7long getTime( ) 返回自 1970 年 1 月 1 日 00:00:00 GMT 以来此 Date 对象表示的毫秒数。
8int hashCode( ) 返回此对象的哈希码值。
9void setTime(long time) 用自1970年1月1日00:00:00 GMT以后time毫秒数设置时间和日期。
10String toString( ) 把此 Date 对象转换为以下形式的 String: dow mon dd hh:mm:ss zzz yyyy 其中: dow 是一周中的某一天 (Sun, Mon, Tue, Wed, Thu, Fri, Sat)。

4、Calendar

LetterDate or Time ComponentPresentationExamples
GEra designatorTextAD
yYearYear1996; 96
YWeek yearYear2009; 09
MMonth in year (context sensitive)MonthJuly; Jul; 07
LMonth in year (standalone form)MonthJuly; Jul; 07
wWeek in yearNumber27
WWeek in monthNumber2
DDay in yearNumber189
dDay in monthNumber10
FDay of week in monthNumber2
EDay name in weekTextTuesday; Tue
uDay number of week (1 = Monday, …, 7 = Sunday)Number1
aAm/pm markerTextPM
HHour in day (0-23)Number0
kHour in day (1-24)Number24
KHour in am/pm (0-11)Number0
hHour in am/pm (1-12)Number12
mMinute in hourNumber30
sSecond in minuteNumber55
SMillisecondNumber978
zTime zoneGeneral time zonePacific Standard Time; PST; GMT-08:00
ZTime zoneRFC 822 time zone-0800

| z | Time zone | General time zone | Pacific Standard Time; PST; GMT-08:00 |
| Z | Time zone | RFC 822 time zone | -0800 |
| X | Time zone | ISO 8601 time zone | -08; -0800; -08:00 |

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值