J2SE(十三)Java之数组

数组的定义

       数组是一组具有相同数据类型的集合,这种数据类型可以是基本数据类型,也可以是自定义数据类型,基于顺序存储结构实现。数组是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.

你可能感兴趣的:(J2SE)