栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

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

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

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;ia[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);


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/758993.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号