包装类、算法、冒泡排序、方法、递归

Rover20230226 / 2023-08-08 / 原文

# 包装类
1. 基本类型包装类
	1). Integer
		Integer(int)/Integer(String)
		Integer valueOf(int)/Integer valueOf(String)

	2). String 类型转换为 int
		方式1
		
		方式2
		int j = integer.parseInt(str);	// 强烈推荐
2. 自动拆装箱(JDK5)
	1). 自动装箱
		int 自动转换成 Integer
			Integer i1 = 200;	// 自动装箱
    2). 自动拆箱
    	Integer 自动转换成 int
    		int i2 = i1 + 1;	// 自动拆箱
    3). 整数常量池
    	-128 ~ 127
    	1. Integer 在该数值范围内可复用整数常量池
    	2. 不在此范围,直接new

3. 案例: 字符串切割
	1). 按逗号切割
# 算法
1. 种类
	交换排序:①冒泡排序、②快速排序
	插入排序:③直接插入排序、④希尔排序
	选择排序:⑤简单选择排序、⑥堆排序
	⑦归并排序
	⑧基数排序

2. 二分查找
	- 思路
	0). 数组元素从小到大排序
	1). 获取整个数组的中间索引
		left = 0;
		right = array.length - 1;
		mid = (left + right)/2;
    2). 比较 X 和 array[mid]
    	1. 如果 X 大, left = mid + 1;  重复 1、2 步
    	2. 如果 X 小, right = mid - 1;  重复 1、2 步
		3. 如果相等, 结束, return当前索引。
    3). 循环条件: while (left <= right)
    - 实现

3. 冒泡排序
	- 需求:对数组中的元素按从小到大的顺序排列
	- 思路
	1). 第一轮:
		相邻两位数字进行比较,小的放前,大的放后
		总结: 比较次数 array.length-1
		结果: 最右边是最大的
    2). 第二轮:
    	相邻两位数字进行比较,小的在前,大的在后
    	总结: 比较次数 array.length-2
    	结果: 右边倒数第二个值是第二大的
    3). 重复
    - 统计
    总轮数: array.length-1
    第n轮比较次数: array.length-n  (n的初始值为1)
    循环条件:
    for (int i = 1; i <= arr.length - 1; i++) {
    	for (int j = 0; j <= arr.length - 1 - i; j++) {
    	}
    }
# 方法
- 方法调用者: 交换
	1.入参
	2.出参
- 方法设计者: 逻辑
	对入参做什么,然后给对方返回相应的出参
# 递归
1. 计算5的阶乘
	1). 方案一: 循环
	2). 方案二: 递归
2. 递归的表现: 方法不断调用自身的过程
3. 递归的编写:
	1). 要找到每一步规律
	2). 要有结束条件
4. 例子
	5! = 5 * 4 * 3 * 2 * 1
	
	5! = 5 * 4!
			= 4 * 3!
					= 3 * 2!
							= 2 * 1!
									= 1
5. 原理
	层层递进, 层层回归
6. 递归的注意点
	1). 一定要有结束条件
	2). 递归次数不能太多
# Arrays(应用)
- Arrays的常用方法
toString(int[] a)/sort(int[] a)/binarySearch(int[] a, int[] key)