标签:就是 二维 原来 遍历 ack 操作 color 最小值 next
今天主要回顾一下数组方面的知识吧,有一维数组,二维数组,以及它们的经典应用。、
(1)for(int i = 0; i < arr.length; i++){
System.out.println(arr[i]);
} //与其说遍历数组不如说遍历下标
(2)for(int i : arr){
//arr[i] += 10; //只能遍历数组但是不能改变数组中的值
System.out.println(i);
} //增强 for 循环,此时的 i 依次表示数组中的每一个元素
//4.获取数组中最值(最大值/最小值)
//方式一:定义变量来记录数组中的最大值,然后遍历数组,让数组中的元素依次与最大值进行比较;如果大于最大值,则将这个元素覆盖原来的最大值
int max = arr[0];
for(int i : arr){
if(max < i){
max = i;
}
}
System.out.println(max);
//方式二:定义变量来记录最大值的下标。
int flag = 0;
for(int i = 1; i < arr.length; i++){
if(arr[i-1] < arr[i]){
flag = i;
}
}
System.out.println(arr[flag]);

//冒泡排序
for(int i = 1; i < arr.length; i++){
//定义一个循环控制每一轮比较的次数
for(int j =1; j <= arr.length - i; j++){
if(arr[j -1] > arr[j]){
int temp = arr[j - 1];
arr[j - 1] = arr[j];
arr[j] = temp;
}
}
}
String str = Arrays.toString(arr);
System.out.println(str);

//选择排序
//控制轮数
for(int i = 1; i < arr.length; i++){
//控制每一轮要比较的下标
for(int j = i; j < arr.length; j++){
if(arr[i - 1] > arr[j]){
int temp = arr[i - 1];
arr[i - 1] = arr[j];
arr[j] = temp;
}
}
}
//只能进行升序排序
//扩展:底层用的是快速排序 + 归并排序
//时间复杂度:O(nlogn)
Arrays.sort(arr);
System.out.println(Arrays.toString(arr));
//反转数组
//方式一:
//时间复杂度:O(n),空间复杂度:O(n)
int[] newArr = new int[arr.length];
for(int i = arr.length - 1, j = 0; i >= 0; i--,j++){
newArr[j] = arr[i];
}
System.out.println(Arrays.toString(newArr));
//方式二:头尾交换
//时间复杂度:O(n),空间复杂度 O(1)
for(int i = 0, j = arr.length - 1; i <= j; i++, j--){
int temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
System.out.println(Arrays.toString(arr));
/数组的复制
//表示从 arr1 下标为 2 的位置上复制 4 个元素放入 arr2 数组中,
//从 arr2 数组的下标为 4 的位置存放
int[] arr1 = {5,1,7,0,8,2,6};
int[] arr2 = new int[5];
System.arraycopy(arr1,2,arr2,0,4);
System.out.println(Arrays.toString(arr2));
//数组的扩容 --- 数组的复制 --- 产生一个新的数组,导致扩容之后的数组和原数组不是同一个
int[] arr = {3,6,1,7,9};
int[] newArr = new int[8];
System.arraycopy(arr,0,newArr,0,arr.length);
arr = newArr;
arr = Arrays.copyOf(arr,8);//这一步等价于前面三步
System.out.println(Arrays.toString(arr));

import java.util.Scanner;
import java.util.Arrays;
public class Demo{
public static void main(String[] args){
Scanner s = new Scanner(System.in);
//定义行数
int n = s.nextInt();
//定义二维数组来存储杨辉三角
int[][] arr = new int[n][];
//遍历数组,向里填充元素
for(int i = 0; i < n; i++){
//先给每一个一维数组定义大小
arr[i] = new int[i + 1];
//遍历一个一维数组,向里填充元素
for(int j = 0; j <= i; j++){
//判断头尾元素
if(j == 0 || j ==i){
arr[i][j] = 1;
}else{
arr[i][j] = arr[i - 1][j] + arr[i - 1][j - 1];
}
//填充完成之后打印这个填充的元素
System.out.print(arr[i][j]+"\t");
}
System.out.println();
}
//一个循环打印九九乘法表
for(int i = 1,j = 1;i <= 9; j++){
//无论哪一行,上来都是先打印*
System.out.print("*");
//判断是否打印完最后一个*
if(j == i){
//换行
System.out.println();
//行数 +1
i++;
// *从头开始计数
j = 0;
}
}
}
}
标签:就是 二维 原来 遍历 ack 操作 color 最小值 next
原文地址:https://www.cnblogs.com/tangdiao/p/9438666.html