数组的定义
数组是一组具有相同数据类型的集合,这种数据类型可以是基本数据类型,也可以是自定义数据类型,基于顺序存储结构实现。数组是JAVA中最基本的数据结构,用来存储固定大小的同类型元素。
数组的声明
dataType[] arrayRefVar; dataType arrayRefVar[];声明数组不指定数组长度。
数组的创建
arrayRefVar = new dataType[arraySize];上面的语法语句做了两件事:
dataType[] arrayRefVar = new dataType[arraySize];另外,你还可以使用如下的方式创建数组。
dataType[] arrayRefVar = {value0, value1, ..., valuek};
数组的运用
数组的排序
数组的排序有很多种,常用的基本排序方法有冒泡排序、选择排序、插入排序、希尔排序等
1.冒泡排序
public int[] maoPao(int x[]){ for(int i=0;i<x.length;i++){ for(int j=i+1;j<x.length;j++){ if(x[i]>x[j]){ int tem=x[i]; x[i]=x[j]; x[j]=tem; } } } return x; }2.选择排序
public int[] xuanZe(int x[]){ for(int i=0;i<x.length;i++){ int low=i; for(int j=i+1;j<x.length;j++){ if(x[j]<x[low]){ low=j; } } //交换 int tem=x[i]; x[i]=x[low]; x[low]=tem; } return x; }3.插入排序
public int[] caRu(int x[]){ for(int i=1;i<x.length;i++){ for(int j=i;j<x.length;j--){ if(x[j]<x[j-1]){ int tem=x[j]; x[j]=x[j-1]; x[j-1]=tem; } } } return x; }4.希尔排序
public int[] shell(int x[]){ for(int gap=x.length/2;gap>0;gap/=2){ for(int i=gap;i<x.length;i++){ int tem=x[i]; int j=0; for(j=i;j>=gap;j-=gap){ if(tem<x[j-gap]){ x[j]=x[j-gap]; }else{ break; } } x[j]=tem; } } return x; }实际java也给我们提供了操作数组的java封装类Arrays,封装了数组的一些操作,如排序方法sort()
public static void sort(int[] a) { DualPivotQuicksort.sort(a); }用二分查找算法在给定数组中搜索给定值的对象(Byte,Int,double等)。数组在调用前必须排序好的。如果查找值包含在数组中,则返回搜索键的索引;否则返回 (-(插入点) - 1)。
public static int binarySearch(long[] a, long key) { return binarySearch0(a, 0, a.length, key); }判断两个数组是否相等
public static boolean equals(int[] a, int[] a2) {
如果两个指定的 long 型数组彼此相等,则返回 true。如果两个数组包含相同数量的元素,并且两个数组中的所有相应元素对都是相等的,则认为这两个数组是相等的。换句话说,如果两个数组以相同顺序包含相同的元素,则两个数组是相等的。同样的方法适用于所有的其他基本数据类型(Byte,short,Int等)。
给数组分配值
public static void fill(int[] a, int val) { for (int i = 0, len = a.length; i < len; i++) a[i] = val; }将指定的 int 值分配给指定 int 型数组指定范围中的每个元素。同样的方法适用于所有的其他基本数据类型。
还有数组的复制等其他方法,有兴趣请查看API.