四 数组
4.1 一维数组的创建和使用
4.1.1 创建一维数组
数组作为对象允许使用new关键字进行内存分配。一维数组的创建有两种形式
(1)先声明,再用new运算符进行内存分配
声明数组:int a []
或int [] a
分配空间:a = new int[n]
在使用new关键字为数组分配空间时,数值型数组默认初始值为0(.0)
(2)声明同时分配内存
int a[] = new int [n]
4.1.2 初始化一维数组
第一种初始化方式:int a[] = new int []{1,2,3,4,5}
第二种初始化方式:int a[] = {1,2,3,4,5}
4.3 二维数组的创建和使用
4.3.1 二维数组的创建
(1)先声明,再分配空间
- 声明数组:
int a[][]
或int[][] a
- 分配空间:
1.直接为每一维分配内存空间:a = new int [m][n]
2.分别为每一维分配内存:
a = new int[2][]
a[0] = new int[2]
a[1] = new int[5]
(2)声明的同时为数组分配内存int [][] a = new int [m][n]
4.3.2 二维数组初始化
如:int arr[][] = new int [][]{{1,2},{2,3,4}}
如:int arr[][] = {{1,2,3,4,5},{2,3,4}}
4.4 数组的基本操作
java.util包中的Arrays类中包含了用来操作数组的许多方法,下面介绍几种基本操作
4.4.1 遍历数组
使用for循环对数组进行遍历,使用数组的length()方法得到数组的长度。
public class TEST {
public static void main(String[] args) {
int a[] = new int[] {1,2,3,4,5,6,7,8,9,4};
for (int i = 0; i < a.length; i++) {
System.out.println(a[i]);
}
}
}
使用foreach遍历数组
public class TEST {
public static void main(String[] args) {
int a[] = new int[] {1,2,3,4,5,6,7,8,9,4};
for (int i : a) {
System.out.println(i);
}
}
}
4.4.2 填充替换数组元素
使用Arrays类的fill()方法对数组进行填充替换.该方法将指定的int值value分配给int型数组a[]中指定范围内的每个元素。
fill(int[] a, int value)
和
fill(int[] a,int fromIndex ,int toIndex,int value)
4.4.3 对数组进行排序
使用Arrays中的静态sort()方法可以实现对数组的升序排序
Arrays.sort(object)
,其中object为进行排序的数组名
4.4.4 复制数组
Arrays类的copyOf()方法与copyOfRange()方法可以实现对数组的赋值Arrays.copyOf(Object[] arr , int newlength)
,其中newlength指复制后新数组的长度,如果newlength大于arr.length,则用0或null填充。
Arrays.copyOfRange(Object[] arr , int fromIndex , int toIndex)
注意:toIndex可以超出arr的长度,但是不包括索引值为toIndex的元素。
4.4.5 数组查询
Arrays类的binarySearch()方法,可以使用二分搜索法来搜索指定数组获取指定对象。binarySearch()有两种重载类型
(1)binarySearch(Object[] a , Object key)
如果对象key包含在数组中,则返回搜索值的索引,否则返回-1或“-”(插入点,是搜索键将要插入数组的那一点)。
import java.util.Arrays;
public class TEST {
public static void main(String[] args) {
int a[] = new int[] {4,5,1,2};
Arrays.sort(a);
int i =Arrays.binarySearch(a, 3);
System.out.println(i);//输出结果为-3
}
}
如在数组a中搜索元素3,因为数组中不存在元素3,因此返回的索引值为“-”,对数组进行排序后3应该处于数组的第三位,因此返回的索引值index应为-3。如果不对数组进行排序,则返回的索引值不能确定。
(2)binarySearch(Object[] a ,int fromUbdex , int toIndex , Object key)
该方法在指定范围内检索某一元素。范围包含索引值fromIndex,不包括toIndex
6.5 数组排序算法
6.5.1 冒泡排序
冒泡排序算法是非常经典的数组排序算法,它总是将小数往前放,大数往后放,类似水中气泡上升。
基本思想是比较相邻的元素值,如果满足条件就交换元素值,将大数向后移,小数向前移。
6.5.2 直接选择排序
直接选择排序属于选择排序的一种,排序速度比冒泡排序快一些。
它不是相邻元素进行排序,而是把满足条件的元素和指定位置的元素进行比较交换,这样排序好的位置就逐渐扩大,需要的排序次数也少很多。
6.5.3 反转排序
以相反的顺序将原有的数组进行排序。
转载:https://blog.csdn.net/WOD_MAAYA/article/details/106179351