数组的定义
数组是一组具有相同数据类型的集合,这种数据类型可以是基本数据类型,也可以是自定义数据类型,基于顺序存储结构实现。数组是JAVA中最基本的数据结构,用来存储固定大小的同类型元素。
数组的声明
dataType[] arrayRefVar;
dataType arrayRefVar[];
声明数组不指定数组长度。
数组的创建
arrayRefVar = new dataType[arraySize];
上面的语法语句做了两件事:一、使用dataType[arraySize]创建了一个数组。
二、把新创建的数组的引用赋值给变量 arrayRefVar。
数组变量的声明,和创建数组可以用一条语句完成,如下所示:
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.