数组的二分查找步骤
1,定义两个变量,表示要查找的范围,默认min=0,max=最大索引
2,循环查找,但是min<=max
3,计算出mid的值
4,判断mid位置的元素是否为要查找的元素,如果是直接返回索引
5,如果要查找的值在mid的左半边,那么min值不变,max=mid-1,继续下次循环查找
6,如果要查找的值在mid的有半边,那么max值不变,min = mid+1,继续下次循环查找
7,当min>max时,表示要查找的元素在数组中不存在,返回-1;
写方法的要点
1,要明确干什么
2,干这件事的条件,需要什么
3,干完这件事,要不要把结果返回调用者
冒泡排序
排序:将一组数据按照固定的规则进行排列
冒泡排序:相邻的数两两进行比较,小的放前面,大的放后面
步骤
1,相邻的元素比较,大的放右边,小的放左边,找到最大值。
2,第一次循环结束,最大值已经找打,在数组的最右边
3,下一次只要在剩余的元素中找最大值就可以了
4,因为已经确定了最大值,所以最大值就没有必要比较了
6,最后只剩下一个值,就是最后一个格子了
如果有n个数据进行排序,总共需要比较n-1次
每一次比较完毕,下一次的比较就会少一个数据参与
递归
递归概述:以编程的角度来看,递归指的是方法定义中调用本身的现象
递归解决问题的思路:
把一个复杂的问题层层转化为一个与原问题相似的规模小的问题来求解,递归策略只需少量的程序就可描述出解题过程所需要的多次重复计算。
递归解决问题要找到两个内容:
递归出口:否则会出现内存溢出
递归规则:与原问题相似的规模较小的问题
快排
1,第一个数作为基准数
2,从右边开始找比基准数小的
3,从左边开始找比基准数大的
4,右边开始的继续往左找,左边开始的继续往右找,知道两边同时指向一个索引为止
5,基准数归为
基准数左边的都比基准数小,基准数右边的都比基准数大,相当于已经找到基准数应该在的位置
Arrays方法
public static String toString (int[] args) | 返回指定数组的内容,以字符串的形式 |
public static void sort (int[] a) | 按照数组顺序排列指定的数组 |
public static int binarySearch(int[] a ,in key) | 利用二分查找法返回指定值得索引 |