数组的一些应用场景
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