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

CGB2108day05

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

CGB2108day05

数组 1.数组的创建方式 1.静态创建

int[] a = {1,2,3,4,5};
int[] a = new int[]{1,2,3,4,5};

2.动态创建

int[] a = new int[5];

2.数组创建的过程

1.在内存中开辟出一块连续的内存空间,用来存放多个相同类型的数据

2.给数组完成初始化的过程,给每个元素赋予数组对应类型的默认值,比如int的默认值是0

3.数组完成初始化后会分配一个唯一的地址值

4.把唯一的地址值交给数组的引用类型变量【数组名】来保存

5.如果想要操作数组中的元素,可以根据变量保存的地址找到数组,然后根据下标来操作数组的具体元素

6.数组名保存的是数组的地址值,不是数组中每一个具体的元素,数组名是一个引用类型的变量

3.数组的特性

1.我们是通过数组的下标来操作数组中的元素的,数组下标从0开始,最大下标的数组的长度-1

2.数组的下标是我们能够进行操作数组的唯一的手段

3.不能访问不属于这个数组的下标,否则会数组下标越界异常

4.数组的长度我们可以通过"数组名.length"来获取

5.数组一旦提交,长度不可改变

6.如果想要增加或者删除数组中的元素,需要创建新长度的数组,无法改变原数组的长度

4.数组工具类Arrays

1.toString(数组名):用来查看当前数组的所有具体元素

.除了char类型的数组底层做了处理以外,其他任何类型的数组,想要查看数组的具体元素,都必须使用此方法

.如果不适用这个方法,直接打印数组名,打印的是数组的地址值

2.copyOf(要复制的原数组,新数组的长度):用来进行数组的普通复制/扩容/缩容

如果新数组的长度大于原数组的长度-数组的扩容,不够的位置还是默认值

如果新数组的长度小于原数组的长度-数组的缩容,类似于原数组的截取

如果 新数组的长度等于原数组的长度-数组的普通复制

注意:不管是以上哪种操作,都不是操作原数组,而是创建了一个新的数组

3.sort(数组名):利用优化后的快速排序算法对数组进行排序,这个排序算法是直接对原数组做修改的

5.数组的遍历

1.如果只是想查看数组中有哪些元素,直接使用System.out.println(Arrays.toString(方法名));

2.如果想要拿到数组中的一个个的具体元素,或者是对数组中的元素做进一步的操作,就需要对数组进行遍历

3.遍历:把数组中的所有元素,从头到尾逐个"过一遍"

4.通过循环遍历数组,所以循环中的循环变量代表的是数组的下标

6.冒泡排序 排序思路:

1.我们需要比较多轮,如果有n个数,最多比较n-1轮

2.在每一轮中,需要进行多次的相邻比较,如果位置不对,就互换

注意:前面轮中确定的最大值,不需要参与本轮的比较

3.我们使用的是嵌套for循环来完成的:

外层循环循环变量代表的是轮数【数组的长度-1】

内层循环循环变量代表的是数组的下标【轮数越后,次数越少,所以j随着i的增大而减小】

4.优化思路:

之前轮中的最大值,不需要参与本轮的比较

如果顺序没有那么乱,可能不需要比较n-1轮,需要确定什么时候提前结束剩下的轮数

可以设置一个flag,初始值为false,一旦发生数据交换,说明排序还在进行,把flag改为相反的值true,在本轮所有相邻比较结束以后,判断flag是初始值还是中途被修改成了true。如果相邻比较都完成了,flag没有中途被修改,说明所有数据没有发生交换位置,也就是说数据已经提前排好序了,那么我们就直接结束剩下几轮的循环,提交效率。


 

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

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

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