一维数组中的常见问题
1. 最值问题:最大值/最小值
int[] arr = {13,87,65,24,57} ;
问题分析:假设思想
1)将数组中第一个元素arr[0]看为最大值
2)从角标1开始遍历其他元素
3)分别将当前遍历的元素依次和最大值进行比较,如果当前元素大于最大值,将当前元素内容赋值max变量。
2.数组的元素逆序
int[] arr = {13,87,65,24,57} ;
中心思想:
将13 arr[0]–57 arr[arr.length-1]互换
将87 arr[1]—24 arr[arr.length-1-1]互换…
…
保证:数组的长度/2
3.数组的元素基本查找
查询数组中的元素在数组索引值。
查询的数组: 可以无序的,也可以有序
方法:使用for循环遍历数组,通过if判断确定数组中是否存在要 查找的数字。
4.冒泡排序
思想:两两比较,将较大的值往后放;第一次比较完毕,最大值就出 现在最大索引处!依次这样比较;
规律:
第一次:有0个不比
第二次:有1个不比
…
…
比较的轮数:数组长度-1次
每轮的比较次数:数组长度-1-i(元素下标)次
二维数组的应用
杨辉三角形
输出:
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
1 5 10 10 5 1
分析:
1)行数和列数:都是6(数据可以采用键盘录入)。
2)任何一行的第一列和最后一列都是1
3)从第三行开始,中间的数据的值等于上一行的前一列+上一行的本列之和。
实现过程:
1)键盘录入一个数据:使用二维数组初始化
int[][] arr = new int[n][n] ;
2)给二维数组中的数据赋值.将定义二维数组遍历,外层循环控制行数,内层循环控制列数
for(int x =0 ; x < arr.length ; x ++){
任何一行的第一列和最后一列都是1
}
3)再次遍历二维数组
从第三行开始,中间的数据的值等于上一行的前一列+上一行的本列之和。