1、数组的定义
1)概念
同一种类型数据的集合,其实数组就是一个容器
2)数组的好处
可以给这些数据从0开始编号,方便操作这些数据
3)定义一个数组的方法
格式一:元素类型 [ ] 数组名=new 元素类型[ 元素个数或数组长度];
例如:int [ ] arr=new int [6];
格式二:元素类型 [ ] 数组名=new 元素类型[ ]{元素1,元素2 ....};
例如:int [ ] arr=new int [3]{1,2,3}; int [ ] arr={1,3,5,7};
2、对数组的遍历
如何依次打印出数组中的元素呢?数组中的每个元素都有自己的唯一的一个角标,所以可以利用for循环语句对其依次打印
代码实例:
<pre name="code" class="java">public class ArrayTest {
public static void main(String args[]){
int []arr={1,6,8,7,4,9};
for(int x=0;x<arr.length;x++){//定义一个变量x代表数组的角标,如果x小于数组的长度,就能一直打印数组元素
System.out.print(arr[x]+" ");
}
}
}
3、输出一个数组的最大值
思路:1.要输出最大值就要对数组中的每一个元素进行比较,每一次比较都会产生一个最大值,所以需要定义一个变量来存储这个值;
2.让数组中的每一值都与这个变量的值进行比较,如果大于这个值,就将这个大值赋给这个变量;
3.当所有元素都比较完了,这个变量的值就是数组中的最大值。
代码示例:
public class ArrayTest {
public static int getMax(int [] arr){
int max=arr[0];//定义一个变量来存储最大值,先将数组中的某个元素的值赋给它
for(int x=0;x<arr.length;x++){//定义循环语句对数组进行遍历,以此将数组中的元素与max的值进行比较
if(max<arr[x])
max=arr[x];//max小于某个元素,就将这个大值赋给max
}
return max;//最终返回的是这个数组的最大值
}
public static void main(String args[]){
int []arr={1,6,8,7,4,9};
int max=getMax(arr);
System.out.println("max="+max);
}
}
4、将一个数组进行从小到大排序
有两种方法:选择排序法,冒泡排序法
1)选择排序法:顾名思义,就是依次进行比较,选择出这个数组的最值,并将其放在数组的首端,再利用相同的方法,选择出第二个最值,放到第二个位置,依次排序。
实现的步骤:定义一个嵌套循环,用数组中的第一个元素与后面的元素依次进行比较,如果比它大的话,就将这两个元素互换位置,然后接着用第一个元素与后面的元素比较,直到完毕
代码示例:
public class ArrayTest2 {
public static void selectSort(int []a){
for(int x=0;x<a.length-1;x++){/*利用嵌套循环让数组中最小角标的元素与后面的每个元素进行比较,
当x循环到数组的倒数第二个元素时,数组已经排好顺序,所以让x<a.length-1*/
for(int y=x+1;y<a.length;y++){/*第二个循环的作用是让第x个元素与第x+1个元素进行比较*/
if(a[x]>a[y]){
int temp=a[x];/*定义一个第三方变量来存储两个元素中的最大值,并将大值赋给第x+1个元素,
这样第一次循环就能选择出这个数组中最小的一个元素,并将其置换到第一个位置*/
a[x]=a[y];
a[y]=temp;
}
}
}
}
public static void main(String args[]){
int []arr={8,6,4,6,2,7,16};
selectSort(arr);
for(int x=0;x<arr.length;x++){
System.out.print(arr[x]+" ");
}
}
}
2)冒泡排序:实现方式是把相邻两个元素进行比较,把符合条件的两个元素互换位置,然后接着比较,第一轮比较,在数组的最后一位将会是这个数组的最大值,进行第二轮
排序的时候,最后一个元素不用参与比较,要进行比较的数组元素就会少一个。
代码示例:
public class ArrayTest2 {
public static void bubbleSort(int [] a){
for(int x=0;x<a.length;x++){
for(int y=0;y<a.length-x-1;y++){/*-x是为了让每一次比较的元素减少,-1是为了避免a[y+1]的角标越界*/
if(a[y]>a[y+1]){
int temp=a[y];/*定义一个变量存储两个相邻元素的最大值,然后把两个元素互换位置*/
a[y]=a[y+1];
a[y+1]=temp;
}
}
}
}
public static void main(String args[]){
int []arr={8,6,4,6,2,7,16};
bubbleSort(arr);
for(int x=0;x<arr.length;x++){
System.out.print(arr[x]+" ");
}
}
}
总结:通过比较的次数可以看出,这两种方法的效率都比较低,所以在实际应用中都不经常使用,Java为我们提供的一个直接排序的方法是:Arrays.sort(数组);