Day11-数组的使用
数组的使用
一.数组的使用
package com.array;
public class ArrayDemo03 {
public static void main(String[] args) {
int[] array={1,2,3,4,5};
//打印全部的数组元素
for (int i = 0; i <array.length ; i++) {
System.out.println(array[i]);
}
System.out.println("=================");
//计算所有元素的和
int sum=0;
for (int i = 0; i < array.length; i++) {
sum+=array[i];
}
System.out.println("sum="+sum);
System.out.println("=================");
//查找最大元素
int max=array[0];
for (int i = 0; i <array.length ; i++) {
if (array[i]>max){
max=array[i];
}
}
System.out.println("max="+max);
}
}
package com.array;
public class ArrayDemo04 {
public static void main(String[] args) {
int[] arrays={1,2,3,4,5};
//没有下标
for (int array : arrays) {
System.out.println(array);
}
// System.out.println("=============");
// printArray(arrays);
System.out.println("=============");
int[] reverse = reverse(arrays);
printArray(reverse);
}
//打印数组元素
public static void printArray(int arrays[]){
for (int i = 0; i <arrays.length ; i++) {
System.out.print(arrays[i]+" ");
}
}
//反转数组
public static int[] reverse(int[] arrays){
int[] result=new int[arrays.length];//arrays.length就是数组元素的个数
for (int i = 0,j=result.length-1; i <arrays.length ; i++,j--) {
result[j]=arrays[i];
}
return result;
}
}
//这个反转数组不太好理解,这里说一哈
//首先这一步 int[] result=new int[arrays.length];
//就是保证反转后的数组与原数组的长度相等
//下一步就是,首先i=0的时候,把arrays[0]赋给result[4]
//i不能超出原数组arrays的长度范围。执行循环
//i++,同时j--。将arrays[1]赋给result[3]......
//以此类推,直到i=5不能再循环为止,反转实现
//调用方法reverse,反转arrays
//像这样int[] reverse = reverse(arrays);
//反转完成后调用我们写好的printArray方法,进行输出
//如下
// printArray(reverse);反转成功!
二.多维数组
多维数组可以看成是数组的数组,比如二维数组就是一个特殊的一维数组,其每一个元素都是一个一维数组
二维数组:
int a[][] = new int[2][5];
解析:以上二维数组a可以看成一个两行五列的数组

package com.array;
public class ArrayDemo05 {
public static void main(String[] args) {
//[4][2]
/*
1,2 array[0]
2,3 array[1]
3,4 array[2]
4,5 array[3]
*/
int[][] array={{1,2},{2,3},{3,4},{4,5}};
printArray(array[0]);//1 2
System.out.printf("\n");
System.out.println(array[0][0]);//1
System.out.println(array[0][1]);//2
//还可以用for循环嵌套打印
// for (int i = 0; i < array.length; i++) {
// for (int j = 0; j <array[i].length ; j++) {
// System.out.println(array[i][j]);
// }
// }
}
public static void printArray(int arrays[]){
for (int i = 0; i <arrays.length ; i++) {
System.out.print(arrays[i]+" ");
}
}
}
三.Arrays类

package com.array;
import java.util.Arrays;
public class ArrayDemo06 {
public static void main(String[] args) {
int[] a={1,2,3,4,2817,8,9835,11213};
System.out.println(a);//[I@4554617c
//打印数组元素
System.out.println(Arrays.toString(a));//1, 2, 3, 4, 2817, 8, 9835, 11213]
Arrays.sort(a);//数组进行排序
System.out.println(Arrays.toString(a));//[1, 2, 3, 4, 8, 2817, 9835, 11213]
Arrays.fill(a,0);//数组填充
System.out.println(Arrays.toString(a));//[0, 0, 0, 0, 0, 0, 0, 0]
}
}
四.冒泡排序
冒泡排序无疑是最为出名的排序算法之一,总共有八大排序
冒泡算法代码两层循环,外层冒泡轮数,里层依次比较
package com.array;
import java.util.Arrays;
public class ArrayDemo07 {
public static void main(String[] args) {
int[] a={2,7,1,45,134,98,4,1};
int[] sort=shot(a);//调用完我们自己写的排序方法以后,返回排序后的数组
System.out.println(Arrays.toString(sort));
//[1, 1, 2, 4, 7, 45, 98, 134]
}
//冒泡排序
//1.比较数组中,两个相邻的元素,如果第一个数比第二个数大,我们就交换他们的位置
//2.每一次比较。都会产生一个最大,或者最小的数字
//3.下一轮,则可以少一次排序
//4.依次循环,直到结束
public static int[] shot(int array[]){
//临时变量
int temp=0;
//外层循环,判断我们这个要走多少次
for (int i = 0; i < array.length-1; i++) {
//内层循环,比较判断两个数,如果第一个数比第二个数大,则交换位置
boolean flag=false;//通过flag标识位减少没有意义的比较
for (int j = 0; j < array.length-1-i; j++) {
if (array[j+1]<array[j]){
temp=array[j];
array[j]=array[j+1];
array[j+1]=temp;
flag=true;
}
}
if (flag==false){
break;
}
}
return array;
}
}
五.稀疏数组


package com.array;
public class ArrayDemo08 {
public static void main(String[] args) {
//1.创建一个二维数组 11*11 0:没有旗子 1:黑棋 2:白棋
int[][] array1=new int[11][11];
array1[1][2] = 1;
array1[2][3] = 2;
//输出原始的数组;
System.out.println("输出原始的数组");
for (int[] ins: array1){
for(int c : ins){
System.out.print(c + "\t");
}
System.out.println();
}
System.out.println("============================");
//转换为稀疏数组保存
//获取有效值的个数
int sum=0;
for (int i = 0; i < 11; i++) {
for (int j = 0; j < 11; j++) {
if (array1[i][j]!=0){
sum++;
}
}
}
System.out.println("有效值的个数"+sum);
//2.创建一个稀疏数组的数组
int[][] array2=new int[sum+1][3];
array2[0][0]=11;
array2[0][1]=11;
array2[0][2]=sum;
//遍历二维数组,将非零的值,存放在稀疏数组中
int count=0;
for (int i = 0; i < array1.length; i++) {
for (int j = 0; j <array1[i].length ; j++) {
if (array1[i][j]!=0){
count++;
array2[count][0]=i;
array2[count][1]=j;
array2[count][2]=array1[i][j];
}
}
}
//输出稀疏数组
System.out.println("稀疏数组");
for (int i = 0; i < array2.length; i++) {
System.out.println(array2[i][0]+"\t"
+array2[i][1]+"\t"
+array2[i][2]+"\t");
}
System.out.println("===========================");
//还原
//1.读取稀疏数组
int[][] array3=new int[array2[0][0]][array2[0][1]];
//2.给其中的元素还原他的值
for (int i = 1; i <array2.length ; i++) {
array3[array2[i][0]][array2[i][1]] = array2[i][2];
}
//3.打印
System.out.println("输出还原的数组");
for (int[] ins: array3){
for(int c : ins){
System.out.print(c + "\t");
}
System.out.println();
}
}
}
Day11-数组的使用的更多相关文章
- ##DAY11 UITableView编辑
##DAY11 UITableView编辑 每一个视图控制器都有一个编辑按钮,因为项目中编辑的应用场景非常多,所以系统预留了一个编辑按钮供我们使用 self.navigationItem.leftBa ...
- 【JAVA零基础入门系列】Day10 Java中的数组
什么是数组?顾名思义,就是数据的组合,把一些相同类型的数放到一组里去. 那为什么要用数组呢?比如需要统计全班同学的成绩的时候,如果给班上50个同学的成绩信息都命名一个变量进行存储,显然不方便,而且在做 ...
- 【JAVA零基础入门系列】Day11 Java中的类和对象
今天要说的是Java中两个非常重要的概念--类和对象. 什么是类,什么又是对象呢?类是对特定集合的概括描述,比如,人,这个类,外观特征上,有名字,有年龄,能说话,能吃饭等等,这是我们作为人类的相同特征 ...
- javascript中的Array对象 —— 数组的合并、转换、迭代、排序、堆栈
Array 是javascript中经常用到的数据类型.javascript 的数组其他语言中数组的最大的区别是其每个数组项都可以保存任何类型的数据.本文主要讨论javascript中数组的声明.转换 ...
- 探究javascript对象和数组的异同,及函数变量缓存技巧
javascript中最经典也最受非议的一句话就是:javascript中一切皆是对象.这篇重点要提到的,就是任何jser都不陌生的Object和Array. 有段时间曾经很诧异,到底两种数据类型用来 ...
- 编写高质量代码:改善Java程序的151个建议(第5章:数组和集合___建议75~78)
建议75:集合中的元素必须做到compareTo和equals同步 实现了Comparable接口的元素就可以排序,compareTo方法是Comparable接口要求必须实现的,它与equals方法 ...
- 了解PHP中的Array数组和foreach
1. 了解数组 PHP 中的数组实际上是一个有序映射.映射是一种把 values 关联到 keys 的类型.详细的解释可参见:PHP.net中的Array数组 . 2.例子:一般的数组 这里,我 ...
- JavaScript权威指南 - 数组
JavaScript数组是一种特殊类型的对象. JavaScript数组元素可以为任意类型,最大容纳232-1个元素. JavaScript数组是动态的,有新元素添加时,自动更新length属性. J ...
- JavaScript常见的五种数组去重的方式
▓▓▓▓▓▓ 大致介绍 JavaScript的数组去重问题在许多面试中都会遇到,现在做个总结 先来建立一个数组 var arr = [1,2,3,3,2,'我','我',34,'我的',NaN,NaN ...
- js:给定两个数组,如何判断他们的相对应下标的元素类型是一样的
题目: 给Array对象原型上添加一个sameStructureAs方法,该方法接收一个任意类型的参数,要求返回当前数组与传入参数数组(假定是)相对应下标的元素类型是否一致. 假设已经写好了Array ...
随机推荐
- go开发框架推荐
根据自己了解的情况,从易用性和文档完善程度来说,推荐优先考虑使用如下框架: fiber revel echo iris gin beego 以revel作为入门教程,在go项目的根文件夹里执行下面2条 ...
- 51电子-STC89C51开发板:安装驱动
全部内容请点击目录列表查看: 51电子-STC89C51开发板:<目录> --------------------------- 正文开始 ---------------------- ...
- 网络-7 IPv6(下)
Ipv6实验 一.华为 思科与华为在接口启用ipv6 思科会自动产生local地址 华为不会自动产生local地址 以太网接口有mac地址,所以肯定是有eui64 serial接口是没有mac地址,他 ...
- 怎么才能卸载inventor?完全彻底卸载删除干净inventor各种残留注册表和文件的方法和步骤
怎么才能卸载inventor?完全彻底卸载删除干净inventor各种残留注册表和文件的方法和步骤.如何卸载inventor呢?有很多同学想把inventor卸载后重新安装,但是发现inventor安 ...
- Spring Boot应用启动
1.Eclipse 中启动Spring Boot应用 右键应用程序启动类, Run As Java Application 2.maven 命令: mvn spring-boot:run 在应用程序启 ...
- potoshop制作一寸照片
potoshop制作一寸照片 经常因为各种原因需要提供1寸照片,第一反应应还是跑照相馆专业.但是疫情封闭在家怎么高,刚好把偶尔使用一次的potoshop用起来,解决照片制作问题,一来能省几毛钱买茶叶蛋 ...
- 处理GET和POST的中文乱码问题
一.doGet 1.先获取iso的错误字符串 2.回退.重编(用UTF-8) String name = request.getParameter("username"); byt ...
- Golang-Study
Golang-Study-Note 参考教程视频:狂神说 https://www.bilibili.com/video/BV1ae41157o9?p=1&vd_source=793668372 ...
- Hyper-v 安装openwrt
安装注意事项: 1.只能选一代,网卡可以使用新版2.网卡高级设置,MAC地址欺骗一定要选上,不选外部交换机不能上网.3.防火墙做wan口转发4.防火墙wan口,两个reject改为 accept . ...
- logback-spring.xml配置说明
logback-spring.xml的配置说明 <?xml version="1.0" encoding="UTF-8"?> <configu ...