一、数组的概念及定义
1.什么是数组?
数组是存储连续的、相同类型数据、且长度不可修改的容器。
连续的是指:数组在内存中是顺序存储的,需要开辟连续的内存空间。
相同类型是指:存储的数据类型必须相同。
长度不可修改是指:数组长度一旦确定,就不能改变其长度。
2.为什么要学习数组?
当连续创建同一类型的变量时,这种操作属于重复性操作,可以通过数组来解决
3.如何定义一个数组?
3.1动态定义方式:不给数组赋初始值
int[] a=new int[30];
3.2静态定义方式:给数组赋初始值
int[] a=new int[]{0,1,2,3,4} 或 int[] a={0,1,2,3,4}
二、数组的内存解析
1.引用类型数组内存解析
三、数组的应用及相关算法
1.遍历数组
int[] arr={1,2,3,4,5};
for(int i==0;i<arr.length;i++){
System.out.println(arr[i]);
}
2.排序算法
2.1选择排序
用第一个元素和后面其他所有的元素进行比较,有元素比第一个元素小,则把该元素换成第一个元素;
然后用第二个元素和后面其他所有元素进行比较,以此类推...
int[] arr={5,3,99,0,4};
int temp;
for(int i=0;i<arr.length-1;i++){
for(int j=i+1;j<arr.length;j++){
if(arr[i]>arr[j]){
temp=arr[i];
arr[i]=arr[j];
arr[j]=temp;
}
}
}
2.2冒泡排序
元素之间两两相互比较,后一个元素比前一个元素小,则元素之间互换,以此类推...
int[] arr={5,4,3,2,1};
int temp;
for(int j=0;j<arr.length-1;j++) { //2.外层循环,控制比较的次数
for(int i=0;i<arr.length-1-j;i++){ //1.内层循环,控制这次比较到哪里结束
if(arr[i]>arr[i+1]){
temp=arr[i];
arr[i]=arr[i+1];
arr[i+1]=temp;
}
}
System.out.println(Arrays.toString(arr));
}
3.3反转排序(逆序)
int[] arr={1,2,3,4,5};
int temp;
for(int i=0;i<arr.length/2;i++){
temp=arr[i];
arr[i]=arr[arr.length-1-i];
arr[arr.length-1-i]=temp;
}
3.4插入排序
public static void insertionSort(int[] arr) {
int temp;
for(int i=1;i<arr.length;i++) {
for(int j=i;j>0;j--) {
if(arr[j]<arr[j-1]) {
temp=arr[j];
arr[j]=arr[j-1];
arr[j-1]=temp;
}
}
System.out.println(Arrays.toString(arr));
}
}