Java中的数组、扩容、冒泡排序以及快速排序?(五)

前面几章的变量只能存储单个值,而且每个变量之间都相互独立,无法进行多个变量进行统一管理、操作。

在这里插入图片描述

什么是数组

可以一次性定义多个同类型的变量,可以存储多个数据,并且可以对多个变量(数组)进行统一管理。

数组的使用流程

(1) 声明数组:确定数组的数据类型和数组名。
	数据类型[]   数组名;       // 建议 
	注意:数据类型 []数组名; 数据类型 数组名[]; 都可以 
	int[]  a;       int  []a;      int  a[];  
(2) 分配空间:确定数组存储的数据个数,通常称为数组的长度。

数组基本应用语法: 【基础语法

(1) 下标:为了方便管理数组中每个存储空间,对每个空间进行自动编号,此 编号称为下标。
	数组的下标从 0 开始,最大下标为数组的长度-1 
(2) 数组的操作:通过数组名和下标往数组中存储或是访问对应空间中的数据 
			   存储数据:数组名[下标]=值 
			   访问数据:数组名[下标] 
(3)遍历数组:对数组中的所有元素一一进行访问的过程
		// 利用循环变量控制数组的下标  
			for(int i=0;i<数组的长度;i++){ 
				 // 数组名[i]访问数组中数据 
			 } 
(4) 获取数组的长度:数组名.length 
(5) 数组具有默认值,默认值如下: 
	整数(byte/short/int/long):0 
	小数(float/double):0.0
	字符(char):空字符('\u0000') 
 	布尔(boolean):false
 	对象:null

注意:
如果操作数组时,超过数组下标范围时,编译通过运行报错,错误信息为:

java.lang.ArrayIndexOutOfBoundsException
(数组下标越界:上越界+下越界)

数组的其他定义方式: 【基础语法

(1) 先声明,再分配空间: 
	数据类型[] 数组名; 
	数组名 = new 数据类型[长度]; 
	int[] a;
    a = new int[3]; 
(2) 声明的同时并分配空间: 
	数据类型[] 数组名 = new 数据类型[长度]; 
	int[] a = new int[3]; 
(3) 声明的同时并赋值:(显示初始化) 
	数据类型[] 数组名 = new 数据类型[]{值1,值2,值3}; 
	int[] a = new int[]{1,2,3}; 
	注意:[]中不再指定数组的长度,由{}中数据的个数决定 错误写法:
	  	  int[] a = new int[3]{1,3,2}; 
(4) 声明的同时并赋值(显示初始化) 
	数据类型[] 数组名 = {值1,值2,值3}; 
	int[] a = {1,2,3}; 
	注意:这种定义方式声明和初始化必须一起定义 错误写法:
		 int[] a; 
		 a = {1,2,3}; 

什么是数组扩容

(1) 创建一个更大长度的新数组,通常为原数组的2倍 
(2) 将原数组中的元素进行一一复制到新的数组中 
(3) 用新地址覆盖旧地址

这里采用java.util.Arrays.copyOf()工具类实现数组扩容。

数组名 = java.util.Arrays.copyOf(数组名,新长度)
参数说明:
第一个参数:代表需要扩容的数组名字 
第二个参数:代表新数组的长度
 返回值:   代表新数组的地址
 
举例:
     int[] a = {11,22,33,44};
	 // 继续存储 2 个年龄 
	 // 1. 创建一个新数组,长度为2倍 
	 // 2. 将原数组中内容一一赋值 
	 // 3. 新地址覆盖旧地址 
	 	   a=java.util.Arrays.copyOf(a,a.length*2);

数组的排序

将数组中数据按照一定的顺序进行存储(从小到大,从大到小)就是排序。

什么是冒泡排序

每次将相邻的两个元素进行一一比较,较大的数据逐渐往后放 (从小到大)

在这里插入图片描述

// 分轮进行比较,比较的轮数为 长度-1 
	for(int i=1;i<a.length;i++){ 
		for(int j=0;j<a.length-i;j++){ 
			if(a[j]>a[j+1]){ 
				int temp = a[j]; 
				a[j] = a[j+1]; 
				a[j+1] =temp;
			} 
		}
	} 
// 第1轮:j< 4 - i 
	for(int j=0;j<3;j++){ 
		if(a[j]>a[j+1]){ 
			int temp = a[j]; 
			a[j] = a[j+1]; 
			a[j+1] =temp; 
		} 
	} 
// 第2轮:
	for(int j=0;j<2;j++){
		if(a[j]>a[j+1]){ 
			int temp = a[j]; 
			a[j] = a[j+1]; 
			a[j+1] =temp; 
		} 
	} 
// 第3轮:
	for(int j=0;j<1;j++){ 
		 if(a[j]>a[j+1]){ 
		 	int temp = a[j]; 
		 	a[j] = a[j+1]; 
		 	a[j+1] =temp;
		 }
	}

数组的快速排序

这里采用JDK提供的工具实现下面图片数组的快速排序:

java.util.Arrays.sort(a);

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/weixin_60768515/article/details/123384621