1.数组
数组是一个固定长度的,包含了相同数据类型的容器。
2.声明数组
数据类型[] 变量名 or 数据类型 变量名[]
[]:表示该变量是一个数组
int:表示数组中所有元素的数据类型
但是声明数组并不代表创建数组。
3.创建数组
创建数组时要指明数组长度:new int[5]
引用:若变量代表一个数组,则称该变量为引用。
引用与赋值:
int c=5,表示c赋值为5。
a=new int[5],表示让a这个引用指向数组。
e.g. int[] b =new int[5];//声明数组b的同时使其指向一个元素个数为5的数组。
4.访问数组
数组下标为0代表数组的第一个元素。
5.数组长度
.length属性用于访问一个数组的长度。数组访问下标范围为[0,length-1],一旦超过这个范围,就会产生数组下标越界异常。
6.数组初始化
①、分配空间与赋值分步进行
int[] a=new int[4];
System.out.println(a[0]);//若没有赋值,则int类型的数组默认值为0
//进行赋值
a[0]=6;
a[1]=7;
a[2]=8;
a[3]=9;
②、分配空间与赋值同时进行
int[] a=new int[]{6,7,8,9,5};//写法一:分配空间同时赋值
int[] b={1,2,3,4,5};//写法二:省略了new int[],效果一样
//注:若指定了数组的内容,就不能同时设置数组长度,如
//int[] c = new int[3]{100,102,444,836,3236};这种写法是错误的因为长度为3,内容为5产生矛盾了
7.排序
①、选择法排序
正排序
先把数组中的第一位a[0]和其他所有位a[i]进行比较,只要比第一位小就把该数交换到第一位。比较完以后,第一位就是所有元素中最小的数。
int temp;
if(a[i]<a[0]){
temp=a[0];
a[0]=a[i];
a[i]=temp;
}
//和第一个数进行比较,i应该从1开始
把第二位a[1]和其他所有位a[i]进行比较,只要比第二位小就把该数交换到第二位。比较完以后,第二位就是所有元素中第二小的数。
int temp;
if(a[i]<a[1]){
temp=a[0];
a[0]=a[i];
a[i]=temp;
}
//和第二个数进行比较,i应该从2开始
以此类推。观察上述两式,可以发现交换是从第一位开始的,所以以上所有可以写成:
int a [] = new int[]{18,62,68,82,65,9};
for(int j=0;j<a.length-1;j++){
for(int i=j+1;i<a.length;i++){
if(a[i]<a[j]){
int temp=a[j];
a[j]=a[i];
a[i]=temp;
}
}
}
for(int i=0;i<a.length;i++){
System.out.println("从小到大排序后的数组元素:"+a[i]);
}
倒排序
int a [] = new int[]{18,62,68,82,65,9};
for(int j=0;j<a.length-1;j++){
for(int i=j+1;i<a.length;i++){
if(a[i]>a[j]){
int temp=a[j];
a[j]=a[i];
a[i]=temp;
}
}
}
for(int i=0;i<a.length;i++){
System.out.println("从小到大排序后的数组元素:"+a[i]);
}
②、冒泡排序
正排序
第一步:从第一位开始,把相邻两位(a[0]与a[1]、a[1]与a[2]……a[i]与a[i+1])进行比较,将数更大的往后移,直到将最大的数移到最后一位。
if(a[i]>a[i+1]){
int temp=a[i];
a[i]=a[i+1];
a[i+1]=temp;
}
第二步:从第一位开始,把相邻两位进行比较,将数更大的放在后面,直到将第二大的数放在倒数第二个位子(不用和最后一位进行比较)。
以此类推。
外层循环表示排序次数(等于元素个数-1),内层循环表示排序元素下标(等于数组长度-1-i)(数组长度-1表示最大下标)(i表示外层循环排序序数,当i=元素个数-1时就不用再进行排序,因为后面的数已经是排好的,第一个数一定为数组中最小的数。)。
int[] arr=new int[10];
for(int i=0;i<arr.length;i++)}{
arr[i]=(int) Math.random()*100;
}
//给数组中元素赋值
for(int i=0;i<arr.length;i++){
for(int j=0;j<arr.length-1-i;j++){
if(arr[j]>arr[j+1]){
int temp=arr[j];
arr[j]=arr[j+1];
arr[j+1]=temp;
}
}
}
倒排序
int[] arr=new int[10];
for(int i=0;i<arr.length;i++)}{
arr[i]=(int) Math.random()*100;
}
//给数组中元素赋值
for(int i=0;i<arr.length;i++){
for(int j=0;j<arr.length-1-i;j++){
if(arr[j]<arr[j+1]){
int temp=arr[j];
arr[j]=arr[j+1];
arr[j+1]=temp;
}
}
}