Java基础二
数组
1、数组创建语法
1.1 先声明、再分配空间
写法:
数组类型[ ] 数组名;
数组名 = new 数据类型[长度];
int[] array;
array = new int[5];
.
1.2 声明并分配空间
写法:
数组类型[ ] 数组名 = new 数据类型[长度];
int[] array = new int[5];
.
1.3 声明并赋值
1)声明并赋值(繁)
写法:
数据类型[ ] 数组名 = new 数据类型[ ]{v1,v2,v3……};
double[] array = new double[]{1.1,2.2,3.3};
2)声明并赋值(简)
写法:
数据类型[ ] 数组名 = {v1,v2,v3……};
int[] array ={1,3,7};
.
2、数组的知识
2.1 概念
- 一组连续的存储空间,存储多个相同数据类型的值。
- 基本数据类型的变量存储的是值,引用数据类型的变量存储的是地址。
- 访问元素时,需要通过“下标”(从0开始)
内存:
array | 1 | 3 | 7 |
---|---|---|---|
下标 | 0 | 1 | 2 |
System.out.print(array[1]); //输出结果为:3
.
2.2 数组的默认值
public class Test{
public static void main(String[] args){
int[] a = new int[3];
for(int i=0;i<a.length;i++){ //数组名.length 为动态获得数组长度
System.out.print(a[i]);
}
}
}
运行结果:
000
各类型数组的默认值为:
整数:0
小数:0.0
字符:’\u0000’
布尔:false
其他:null
.
3、数组的“扩容”
3.1 思路
因 在创建数组时,必须显式指定长度,并且在创建之后不可更改长度。
- 创建大于原数组长度的新数组
- 将原数组中的元素一次复制到新数组中
.
3.2 方式
- 循环将原数组中的所有元素逐一赋值给新数组。
- System.arraycopy(原数组,原数组起始下标,新数组,新数组起始下标,新长度)
- 数组类型的变量 = java.util.Arrays.copyOf(原数组,新长度);//根据长度创建数组,返回带有原值的新数组
3.3 地址的替换
nums = newNums; //将新数组的地址,赋值给nums变量
.
4、数组的排序
4.1 直接插入排序
将第一个数和第二个数排序,然后构成一个有序序列
将第三个数插入进去,构成一个新的有序序列。
对第四个数、第五个数……直到最后一个数,重复第二步。
public void inserSort(int[] array){
int temp=0;
for(int i=1;i<array.inserSort;i++){
temp=a[i];
int j=i-1;
while(j>=0 && a[j]>temp){
a[j+1]=a[j];
j--;
}
a[j+1]=temp;
}
}
4.2 冒泡排序
将序列中所有元素两两比较,将最大的放在最后面。
将剩余序列中所有元素两两比较,将最大的放在最后面。
重复第二步,直到只剩下一个数。
public void bubbleSort(int[] array){
int temp=0;
for(int i=0;i<array.length;i++){
for(int j=0;j<array.length-i-1;j++){
if(a[j]>a[j+1]){
temp=a[j];
a[j]=a[j+1];
a[j+1]=temp;
}
}
}
}
4.3 快速排序
选择第一个数为p,小于p的数放在左边,大于p的数放在右边。
递归的将p左边和右边的数都按照第一步进行,直到不能递归。
public static void quickSort(int[] numbers,int starat,int end){
if(start<end){
int base=numbers[start];
int temp=0;
int i=start,j=end;
do{
while( (numbers[i]<base) && (i<end) )
i++;
while( (numbers[j]>base) && (j>start) )
j++;
if(i<=j){
temp=numbers[i];
numbers[i]=numbers[j];
numbers[j]=temp;
i++;
j++;
}
}while(i<=j);
if(start<j)
quickSort(numbers,start,j);
if(end>i);
quickSort(numbers,i,end);
}
}
.