数组简介:
数组是用来存储数据的集合,但是,通常我们会把数组看作一个存储具有相同类型 的变量集合会更有用。无须声明单个变量,例如:number0, number1,…,number99, 只要声明一个数组变量 numbers,并且用 numbers[0], numbers[1],…, numbers[99]来表示单个变量。
数组创建:
声明一个数组变量、创建数组、然后将数组引用赋值给变量这三个步驟可以合并在一条语句里。
例如:
(1)int[ ] arr=new arr[100];
元素类型[]数组名 =new 元素类型[ 数组大小];
(2)int[ ] arr=new[]{1,2,3};
数据类型[] 数组名=new 数据类型[]{元素1,元素2,…};
(3)int[ ] arr={1,2,3};
数据类型[] 数组名={元素1,元素2,…};
注意:创建一个指定长度的数组,里面元素是默认的,默认值为0,数组长度一旦确定,就不可改变。
若想改变数组长度就要对其进行扩容,方法如下:
(代码有注释就不介绍扩容过程)
数组的复制:要将一个数组中的内容复制到另外一个中,你需要将数组的每个元素复制到另外一个数组中。
例如:list1=list2;
事实上该语句并不能将list1引用的数组内容复制给 list2, 而只是将list1的引用值复制给了 list2。在这条语句之后,list1和list2 都指向同一个数组,list2 原先所 引用的数组不能再引用,它就变成了垃圾,会被 Java 虚拟机自动收回。
数组排序:
1、选择排序:`
class pxXuanZe{
public static void main(String[] args){
int[] arr={2,3,5,6,1,4}; //对该数组进行排序
for(int i=0;i<arr.length-1;i++){ //遍历数组角标为0到最大长度减一的数
for(int j=i+1;j<arr.length;j++){ //遍历角标i后面的数
if(arr[i]>arr[j]){ //比较大小,如果前者比后者大则交换两个角标对应的值
int temp=arr[i];
arr[i]=arr[j];
arr[j]=temp;
}
}
}
for(int i=0;i<arr.length;i++){
System.out.print(arr[i]+" "); //打印排序后的值
}
}
}
2、冒泡排序
简单来说,冒泡排序就是重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。
class pxMaoPao{
public static void main(String[] args){
int[] arr={2,1,5,3,4,6}; //对该数组进行排序
for(int i=0;i<arr.length-1;i++){ //遍历数组角标为0到最大长度减一的数
for(int j=0;j<arr.length-i-1;j++){ //遍历的数每次循环减少一个
if(arr[j]<arr[j+1]){ //比较大小 大的在后面
int temp=arr[j];
arr[j]=arr[j+1];
arr[j+1]=temp;
}
}
}
for(int i=0;i<arr.length;i++){
System.out.print(arr[i]+" "); //打印
}
}
}
3、插入排序
class pxChaRu{
public static void main(String[] args){
int[] arr={1,5,4,3,2,6};
for(int i=1;i<arr.length;i++){ //遍历i从1到最大长度-1
int e=arr[i]; //创建e等于角标为i的数
int j=i-1; //j表示角标
while(j>=0&&arr[j]>e){ //当角标j大于等于0且j角标的数字大于大于i角标的数字
arr[j+1]=arr[j]; //交换j和j+1角标对于 的数字(即将所有大于该数字的数后移)
j--;
}
arr[j+1]=e; //循环结束后将e的值给角标j+1位置
}
for(int i=0;i<arr.length;i++){
System.out.print(arr[i]+" ");
}
}
}