一、一维数组遍历
1、数组遍历(依次输出数组中的每一个元素)
给定一个数组 int [] arr = {44,6,66,7,965,};
public static void main(String[] args) {
//数组遍历(依次输出数组中的每一个元素)
int [] arr = {44,6,66,7,965,};
System.out.print("[");
//该方法为反向遍历,也可运用到元素逆序
for (int i = arr.length-1; i >= 0; i--) {
System.out.print(arr[i]+",");
}
System.out.print("]");
可以得到结果
[965,7,66,6,44,]
2、数组获取最值(获取数组中的最大值最小值)
public static void main(String[] args) {
int [] arr = {44,6,66,7,965,};
//调用方法返回最值
int max = getMax(arr);
System.out.println("max="+max);
int min = getMin(arr);
System.out.println("min="+min);
}
public static int getMin(int[] arr) {
int min = arr[0];
for (int i = 1; i < arr.length; i++) {
if (arr[i]<min) {
min = arr[i];
}
}
return min;
}
public static int getMax(int[] arr) {
int max =arr[0];
for (int i = 1; i < arr.length; i++) {
if (arr[i]>max) {
max=arr[i];
}
}
return max;
}
得到结果
max=965
min=6
3、数组排序和二分查找
二分查找需要数组是有序的
二分查找的基本思路:
获取最大和最小索引,求出中间元素的索引mid;
判断:若得到查找值key= mid,则满足条件,停止循环输出对应索引;
如得到key>mid,则取后半段,最新小索引为mid+1;
若得到key< mid ,则取前半段,新最大索引为mid-1;
若不存在则输出错误结果;
首先把数组进行排序,我们使用冒泡排序
public static void main(String[] args) {
int [] arr = {4,874,41,44,81,478};
//调用方法
maopao(arr);
//遍历冒泡排序后的数组
System.out.print("排序后为:"+"[");
for (int i = 0; i < arr.length; i++) {
System.out.print(arr[i]+",");
}
System.out.println("]");
Scanner scanner = new Scanner(System.in);
System.out.println("请输入需要查询的元素:");
int index = scanner.nextInt() ;
int min = 0;
int max = arr.length-1;
while (min <= max) {
int mid =( max+min)/2;
if (index == arr[mid]) {
System.out.println(index+"的对应索引为:"+mid);
break;
} else if (index > arr[mid]) {
min = mid +1;
}else if (index < arr [mid]) {
max = mid -1;
}
}
if (max<min) {
System.out.println("不存在");
}
}
public static void maopao(int[] arr) {
for (int i = 0; i < arr.length-1; i++) {
for (int j = 0; j < arr.length-1; j++) {
if (arr[j] > arr[j+1]) {
int t = arr[j];
arr[j]= arr[j+1];
arr[j+1] = t;
}
}
}
}
我们选择44为查询元素:
排序后为:[4,41,44,81,478,874,]
请输入需要查询的元素:
44
44的对应索引为:2
4、杨辉三角(二维数组练习)
分析:
A:如果是n行,那么最后一行是n列。
B:每一行的第一列和最后一列的元素是1。
C:规律:每一行的第二列开始数据是:上一行的上一列+上一行的同一列
D:把二维数组组成,然后遍历即可。
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("请输入需要的行数:");
int n = sc.nextInt();
//确定n行n列的杨辉三角,建立一个二维数组
int [][] arr = new int [n][n];
for (int x = 0; x < n; x++) {
//确定两边最外面的数为1
arr[x][0]=1;
arr[x][x]=1;
}
//从第三行开始计算
for (int x = 2; x < n; x++) {
//从第二列开始计算,两边数为1,计算时要减去
for (int y = 1; y <= x-1; y++) {
arr[x][y] = arr [x-1][y-1]+arr[x-1][y];
}
}
//输出杨辉三角
System.out.println("-----------------");
for (int x = 0; x < arr.length; x++) {
for (int y = 0; y <= x; y++) {
System.out.print(arr[x][y]+" ");
}
System.out.println();
}
}
我们打印一个四行的杨辉三角
请输入需要的行数:
4
-----------------
1
1 1
1 2 1
1 3 3 1