数组
数组是相同类型数据的有序集合.
数组描述的是相同类型的若干个数据,按照一定的先后次序排列组合而成。
其中,每一个数据称作一个数组元素,每个数组元素可以通过一个下标来访问它们。
public class ArrayDemo01 {
public static void main(String[] args) {
//变量的类型 变量的名字 = 变量的值;
//数组类型
/* int[] num1;//首选定义方法
int num2[];//C/C++
*/
int[] nums;
nums = new int[10];//这里可以存10个int类型的数据、
nums[0]=1;
nums[1]=2;
nums[2]=3;
nums[3]=4;
nums[4]=5;
nums[5]=6;
nums[6]=7;
nums[7]=8;
nums[8]=9;
nums[9]=10;
int sum=0;
for(int x:nums){
sum+=x;
}
System.out.println(sum);
int sum1=0;
for (int i = 0; i < nums.length; i++) {
sum1+=nums[i];
}
System.out.println(sum1);
}
}
/*
55
55
*/
java内存分析
数组分析
数组简单使用
普通的For循环
For-Each循环
数组作方法入参
数组作返回值
public class ArrayDemo03 {
public static void main(String[] args) {
int[] arrays = {1, 2, 3, 4, 5, 6};
PrintArray(arrays);
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] + " ");
}
System.out.println();
}
//反转操作
public static int[] reverse(int[] arrays) {
int[] result = new int[arrays.length];
for (int i = 0, j = result.length - 1; i < arrays.length; i++, j--) {
result[j] = arrays[i];
}
return result;
}
}
/*
1 2 3 4 5 6
6 5 4 3 2 1
*/
多维数组
public class ArrayDemo04 {
public static void main(String[] args) {
/*
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);
}
public static void printArray(int[][] arr) {
for (int i = 0; i < arr.length; i++) {
for (int j = 0; j < arr[i].length; j++) {
System.out.print(arr[i][j]+" ");
}
System.out.println();
}
}
}
/*
1 2
2 3
3 4
4 5
*/
Arrays类
import java.util.Arrays;
public class ArrayDemo05 {
public static void main(String[] args) {
int[] a ={1,22,333,444,21,6,3,88};
//数组从小到大排序
Arrays.sort(a);
//打印数组元素
System.out.println(Arrays.toString(a));
printArray(a);
Arrays.fill(a,2,4,0);//从2到4用0填充
System.out.println(Arrays.toString(a));
Arrays.fill(a,0);//把0赋值给数组
System.out.println(Arrays.toString(a));
}
//仿写toString打印数组元素
public static void printArray(int[] a){
for (int i = 0; i < a.length; i++) {
if(i==0) {
System.out.print("[");
}
if(i==a.length-1){
System.out.print(a[i]+"]");
}else{
System.out.print(a[i]+", ");
}
}
}
}
/*
[1, 3, 6, 21, 22, 88, 333, 444]
[1, 3, 6, 21, 22, 88, 333, 444]
[1, 3, 0, 0, 22, 88, 333, 444]
[0, 0, 0, 0, 0, 0, 0, 0]
*/
冒泡排序
import java.util.Arrays;
public class ArrayDemo06 {
public static void main(String[] args) {
int[] a ={5,8,6,2,1,4};
int[] sort=sort(a);
System.out.println(Arrays.toString(sort));
}
//冒泡排序
/*
* 1.比较数组中,两个相邻的元素,如果第一个数比第二个数大,交换位置
* 2.每一次比较,都会产生一个最大或者最小的数
* 3.下一轮则可以少一次排序
* 4.依次循环,直到结束*/
public static int[] sort(int[] arr){
int temp =0;
//外层循环,判断我们要走多少次
for (int i = 0; i < arr.length-1; i++) {
boolean flag = false;
//内层循环,比较两个数,如果第一个数比第二个数大,交换位置
for (int j = 0; j < arr.length-1-i; j++) {
if(arr[j]>arr[j+1]){
temp = arr[j];
arr[j]=arr[j+1];
arr[j+1]=temp;
flag=true;
}
if(!flag){
break;
}
}
}
return arr;
}
}
/*
[1, 2, 4, 5, 6, 8]
*/
稀疏数组
import java.util.Arrays;
public class ArrayDemo07 {
public static void main(String[] args) {
//1.创建一个二维数组 5*5 0:没有棋子 1:黑棋 2:白棋
int[][] array1 = new int[5][5];
array1[1][2]=1;
array1[2][3]=2;
//输出原始的数组
System.out.println("输出原始的数组:");
printArray(array1);
//转换为稀疏数组保存
//获取有效值的个数
int sum=0;
for (int i = 0; i < array1.length; i++) {
for (int j = 0; j < array1[i].length; j++) {
if(array1[i][j]!=0){
sum++;
}
}
}
System.out.println("有效值的个数:"+sum);
//2.创建一个稀疏数组的数组
int[][] array2 =new int[sum+1][3];
array2[0][0]= array1.length;
array2[0][1]=array1[0].length;
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++) {
for (int j = 0; j < array2[i].length; j++) {
System.out.print(array2[i][j]+"\t");
}
System.out.println();
}
//还原数组
System.out.println("还原数组:");
int[][] array3=new int[array2[0][0]][array2[0][1]];
for (int i = 1; i < array2.length; i++) {
array3[array2[i][0]][array2[i][1]]=array2[i][2];
}
//打印还原数组
printArray(array3);
}
public static void printArray(int[][] arr){
for (int[] ints:arr) {
for (int anInt:ints){
System.out.print(anInt+"\t");
}
System.out.println();
}
}
}
/*
输出原始的数组:
0 0 0 0 0
0 0 1 0 0
0 0 0 2 0
0 0 0 0 0
0 0 0 0 0
有效值的个数:2
稀疏数组:
5 5 2
1 2 1
2 3 2
还原数组:
0 0 0 0 0
0 0 1 0 0
0 0 0 2 0
0 0 0 0 0
0 0 0 0 0
*/