第五章总结

一维数组

一维数组实际上是一组相同类型数据的线性集合

1.一维分配内存:

数组名=new 数组元素的类型【数组长度】

分配内存同时设置初始值

数组名=new 数组元素的类型【】{值1,值2,...,值n}

2.一维数组元素赋值

数组名[ 索引 ](类似于序号)=值;

Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: Index 12 out of bounds for length 12

at GetDay.main(GetDay.java:8)//数组越界

解决方案将数字换为数组名.lenght

数组的声明有两种方式:

1、数组元素类型 数组名[]; 例如;int array1[];

2、数组元素类型[] 数组名; 例如;int[] array2;

第一种方式是兼容了在C语言中数组的声明,在Java中通常使用第二种方式进行数组的声明。在进行数组的声明后,需要为数组分配内存空间才能对数组进行操作。

一维数组例题代码:

第五章总结_第1张图片

运行结果:

 第五章总结_第2张图片

2.二维数组

数组元素的类型【】 数组名

数组元素的类型 数组名 【】

二维数组分配内存:
数组名=new 数组元素的类型[行数][列数]

二维数组分配内存同时设置初始值

数组名=new 数组元素的类型【】{{值1,值2,...},{值1,值2,...},{值1,值2,...}}

二维数组元素赋值
数组名[ 索引 ]= {值1,值2,...};

数组名[ 行号 ][ 列号 ]= 值 ;

二维数组例题代码如下:

第五章总结_第3张图片

运行结果: 

第五章总结_第4张图片

3.替换数组元素

Arrays.fill(数组名,值);

 代码如下:

第五章总结_第5张图片

运行结果:

 第五章总结_第6张图片

4.替换部分数组元素:

前改后不改

Arrays.fill(数组名,前索引,后索引,值);

代码如下:

第五章总结_第7张图片

运行结果:

 第五章总结_第8张图片

5.复制数组元素:

数组的完全复制,返回一个与arr数组元素相同的数组。
newlength:复制后的新数组的长度,空位补0,溢出去掉

新数组名=Arrays.copyOf(旧数组名,新数组长度);

代码如下:

第五章总结_第9张图片

运行结果:

 第五章总结_第10张图片

6.复制数组部分元素:前在后不在

新数组名=Arrays。copyOFRange(旧数组名,前索引,后索引);

代码如下:

 第五章总结_第11张图片

 运行结果:

第五章总结_第12张图片

数组的操作

1.数组元素排序

Arrays.sort(数组名);

代码如下:

第五章总结_第13张图片

 

运行结果:

第五章总结_第14张图片

2.查询数组元素:先排序再查询

索引= Arrays.binarySearch(数组名,值);

 在a数组中查询key的下标位置,并且返回该下标。

数据查询方法,该方法底层实现是通过二分搜索来查找key,所以在使用该方法前,需要让数组有序

代码如下:

第五章总结_第15张图片

 运行结果:

第五章总结_第16张图片

 3.指定区间内查询

左闭右开区间,查找的返回包括前索引,但是不包括后索引。

目标值下标=Arrays.binarySearch(数组名,前索引,后索引,元素);

代码如下:

第五章总结_第17张图片

运行结果:

 

4.冒泡排序

冒泡算法由双层循环实现,其中外层循环用于控制排序轮数;

代码如下:

第五章总结_第18张图片

运行结果:

 ​​​​​​​

5.直接排序

循环将最大的数放到最后,固定不动,第二次再将最大的数放到最后,固定不动,往后继续。

代码如下:

第五章总结_第19张图片

 

 运行结果:

6.反转排序

简称倒排,将数组中的元素倒序一遍;

 代码如下:

第五章总结_第20张图片

运行结果:

 第五章总结_第21张图片

 

 

你可能感兴趣的:(数据结构,算法,numpy)