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

# 包装类
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)
posted @   青核桃啊  阅读(9)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
点击右上角即可分享
微信分享提示