数组
相同类型的有序集合
通过数组的下标来访问其中的元素
datatype [] arrayRefVar ={a,b,c,d,e}
数组的特性:
数组在创建时长度就已经确定,不可改变
数组内必须是相同类型
数组元素可以是任何数据类型,包括基本类型和引用类型
数组本身也是引用类型,也可以看做是一个对象,其中元素是对象中的成员变量。数组本身是在堆中的。
静态初始化
int[] nums = {1,2,3,4,5};
动态初始化
int[] nums = new int[5];
此时所有元素默认初始化为0或者null等。
nums[0]=10;
package method;
public class Demo6 {
public static void main(String[] args) {
//输出一个反转数组
int[] arrays = {1,2,3,4,5};
Demo6 demo6 = new Demo6();
demo6.printArray(reverse(reverse(arrays)));
}
public static int[] reverse(int[] arrays){ //数组入参
int[] result = new int[arrays.length];
for (int i = 0; i < arrays.length; i++) {
result[arrays.length-1-i] = arrays[i];
}
return result; //数组作返回值
}
public void printArray(int []arrays){
for (int i = 0; i < arrays.length; i++) {
System.out.println(arrays[i]+" ");
}
}
}
pop排序
两层循环,外层冒泡轮数,里层一次比较,时间复杂度为O(n2)。
package array;
import java.util.Arrays;
public class poparrays {
public static void main(String[] args) {
int[] array = {1,4,4,99,2,3,4,6,1,5,2,3};
int [] a= sort(array);
System.out.println(Arrays.toString(a));
}
public static int[] sort(int[] array){
//外层判断走多少次
for (int i = 0; i < array.length-1; i++) {
boolean flag = false;
//内层循环判断相邻两个数的大小并交换位置。
for (int j = 0; j < array.length-1; j++) {
if (array[j]< array[j+1]){
int temp = array[j];
array[j] =array[j+1];
array[j+1] = temp;
flag = true;
}
}//优化,如果该次循环内没有进行交换,则说明排序已完成,终止循环。
if(flag ==false){
break;
}
}
return array;
}
}
稀疏数组
package array;
import java.util.Arrays;
public class spraseArray {
public static void main(String[] args) {
int[][] sprasearrays = new int [11][11];
sprasearrays[1][2] = 1;
sprasearrays[2][3] = 2;
for (int[] ints: sprasearrays) {
for (int anInt: ints) {
System.out.print(anInt+"\t");
}
System.out.println();
}
int row = sprasearrays.length;
int column = sprasearrays[1].length;
sprase(sprasearrays);
}
public static void sprase(int[][] a){
int sum = 0;
int count = 0;
for (int i = 0; i < a.length; i++) {
for (int j = 0; j < a[i].length; j++) {
if (a[i][j]!=0){
sum++;
}
}
}
System.out.println(“有效值个数为:”+sum);
int[][] array = new int [sum+1][3];
array[0][0] =11;
array[0][1] = 11;
array[0][2] =sum;
for (int i = 0; i < a.length; i++) {
for (int j = 0; j < a.length; j++) {
if(a[i][j]!=0){
count++;
array[count][0] =i;
array[count][1] =j;
array[count][2] =a[i][j];
}
}
}
for (int i = 0; i < array.length; i++) {
System.out.println(array[i][0]+"\t" +array[i][1]+"\t" +array[i][2]+"\t");
}
}
}