黑马程序员-Java数组学习笔记

来源:互联网 发布:mysql 主备热切换 编辑:程序博客网 时间:2024/04/30 06:15

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(数组);





0 0