算法
概念
使用代码实现生活中的数学公式
优点
提高代码的执行效率
如何判断算法是否优秀?
时间复杂度
代码执行的时长,执行时间越短越好
空间复杂度
代码执行时占据的内存,占据的内存越少越好
常用算法
两数交换
int a = 10;
int b = 20;
int temp =a;
a = b;
b = temp;
寻找最值
作用:寻找数组中的最大值或者最小值
寻找最大值
思路:
1、获取一个数组
2、假设数组中第一个数据为最大值
3、循环遍历数组
4、判断假设的最大值与遍历提取的数相比较
5、如果假设的最大值小于提取的数,将提取的数赋值给假设最大值
6、当循环遍历结束后假设的最大值就是真的最大值
寻找最值下标
作用:寻找数组中的最大值或者最小值的下标
寻找最大值下标
思路:
1、获取一个数组
2、假设数组中第一个数据为最大值下标所对应的最大值,此时下标为0
3、循环遍历数组
4、判断假设的最大值与遍历提取的数相比较
5、如果假设的最大值小于提取的数,将提取的数下标赋值给假设最大值的下标
6、当循环遍历结束后假设的最大值下标就是真的最大值下标
排序
作用:将数组中的数据按照定义的规则进行排列
从小到大或从大到小
冒泡排序
核心思想:相邻比较
选择排序
核心思想:寻找最值下标与目标交换
注意:已经找到过的最值,不参与下次比较
快速排序
使用:
Arrays.sort(数组名);
二维数组
概念:将一维数组作为数据,放到一数组中
声明
语法:数据类型[ ][ ] 数组名
创建
静态
数据类型[][] 数组名 = {{值1,值2,...},{值3,值4,值5,..},{值6,值7,...},...};
注意:必须声明与创建同时执行
动态
数组名 = new 数据类型[二维数组中一维数组的个数][一维数组中数据的个数(可有可无)]; 数组名 = new 数据类型[ ][ ] {{值1,值2,...},{值3,值4,值5,..},{值6,值7,...},...};
操作
取值
语法:数组名[一维数组在二维数组中的下标][数据在一维数组中的下标];
改值
语法:数组名[一维数组在二维数组中的下标][数据在一维数组中的下标] = 值;
获取长度
语法:数组名.length 注意:二维数组获取的长度不是所有数据的个数,而是二维数组中一维数组的个数
特殊操作
二维数组的遍历
杨辉三角
1 0 0 0 0 0 0 0 0 0 0
1 1 0 0 0 0 0 0 0 0 0
1 2 1 0 0 0 0 0 0 0 0
1 3 3 1 0 0 0 0 0 0 0
1 4 6 4 1 0 0 0 0 0 0
1 5 10 10 5 1 0 0 0 0
二分查找法
作用:查找数组中的某个元素
要求:数组必须是有序的