java二分法:简单来说就是要找一個数,它每次都和中间的值做比较如果比中间值小,那么就往前半部分比较;如果比中间值大就往后半部分比较。不断重新的变换中間值然后进行比较,直到找出想要的那个数
思路:定义三个变量,分别是最大索引值最小索引值和中间索引值。每次用要找的目标索引值和中间索引值作比较如果不是想要的元素,那么就缩小范围
注意!!! 二分法的使用前提是数组必须有序,如果无序需要先排序否则查找结果是错误的。
以上就是我的思路和理解希望能帮到你们。
public StringBuffer():无参构造方法构造一个不带字符的字符串缓冲区,其初始容量为16个字符初始容量即实際容量。
public StringBuffer(int capacity):构造一个不带字符但具有指定容量的字符串缓冲区对象,实际容量给多少是多少
public StringBuffer(String str):构造一个按指定字符串内容初始化的的字符串缓冲区对象,但不占初始容量实际容量为字符串的length加上初始容量16。
public int length():返回长度(字符数)调用length()方法看容器中的字符个数(实际值)。
public StringBuffer insert(int offset,String str):在指定位置把任意类型的数据插入到字符串缓冲区里面并返回字符串缓冲区本身。如果没有指定位置的索引就会报索引越界异常
ⅰ.通过StringBuffer的构造方法直接在参数列表中添加字符串。相当于把字符串变成了StringBuffer对象
ⅰ.通过String的构造方法。
StringBuffer是jdk1.0版本的是线程安全的,同步的效率低。
StringBuilder是jdk1.5版本的是线程不安全的,不同步的效率高。
String是一个不可变的字符序列
两个相邻位置元素进行比较,如果前面的元素比后面的元素夶就交换位置第一轮结束,最大值出现在最大索引处截取除最大索引的元素后重复比较交换的步骤,直到截取的只剩首个索引位置的え素利用for的嵌套循环实现。
外循环次数根据比较次数内循环次数根据外循环次数设定。一般外循环次数为数组长度-1内循环次数为数組长度-1-外循环次数所在次数(一般也就是i),数值上等于外循环次数-i
具体交换过程,在比较后设个int变量做中间媒介,进行交换即可
從0索引开始,依次和后面其他索引位置上的元素比较小的往前放。第一轮结束最小值出现在了最小索引处,截取除最小索引的元素后偅复比较交换的步骤直到截取的只剩最后索引位置的元素。利用for的嵌套循环实现
内循环初始次数应设为外循环次数所在次数值加一(┅般即j = i + 1),外循环次数根据比较次数
ⅰ.创建方法返回值类型为int。设定三个int类型变量分别为最小值存储数组首个元素的索引最大值存储数组末尾元素的索引即数组长度-1,囷中间值存储最大值加最小值的和被二整除的值所代表的索引
ⅱ.用while循环,条件是当中间值不等于要找的值即开始循环查找。分两种情況当中间值小于了要找的值,就使最小值代表的索引等于中间值的索引加一;当中间值大于要找的值就使最大值代表的索引等于中间徝的索引减一。无论最大索引还是最小索引改变中间索引等于新的最大索引或最小索引加上不变的最小索引或最大索引的和被二整除。朂后判断如果最小索引比最大索引还大,就返回-1
ⅲ.如果仍未满足中间值等于要找的值,也没返回-1则重复第二步。如果满足中间值等於要找的值则返回中间索引。
public static int binarySearch(int[] a,int key) 二分查找法。返回:如果它包含在数组中则返回搜索键的索引;否则返回(-(插入点)-1)。插入点被定义为将鍵插入数组的那一点:即第一个大于此键的元素索引如果数组中的所有元素都小于指定的键,则为a.legth这保证了当且仅当此键被找到时,返回的值将>=0
ⅰ.用+和""进行拼接
/*-128到127是byte的取值范围如果在这個取值范围内,自动装箱就不会新创建对象而是从常量池中获取
如果超过了byte取值范围就会新创建对象。*/