数组的一些应用场景
2018-08-10 11:14:13来源:博客园 阅读 ()
今天主要回顾一下数组方面的知识吧,有一维数组,二维数组,以及它们的经典应用。、
(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[flag] < 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;
}
}
}
}
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
上一篇:java自学 day9
- Java笔记:数组,异常,泛型 2020-06-08
- 如何优雅地停止 Spring Boot 应用? 2020-06-08
- 总结一些 Java 相关笔试、面试题,万一用上了呢 (=_=) -- 基 2020-06-08
- 详解SpringBoot(2.3)应用制作Docker镜像(官方方案) 2020-06-08
- 体验SpringBoot(2.3)应用制作Docker镜像(官方方案) 2020-06-07
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash
