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

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
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值