关于数组的使用,我们要从其实例化和初始化说起,实例化的方法多种多样,掌握常用的几种方法就可以了,下面给几个一维数组的实例化对象:

数据类型  [ ] 数组名 = new  数据类型[长度];

数组名 = new 数据类型[长度];

数组名 = new 数组类型[]{值,...};

java数组在实例化过程中会给数组元素赋初值,像int的初值是0,string的初值是null,如果是自己定义的类,那是初值就是null,数组的的方法只有length,没有其他的方法,虽然java里面不能直接操作地址,但是不可否认数组名代表的是一个地址,所以在我们传参的时候可以直接传数组名,但这是对该数组进行操作的,使用时要多加注意,二维数组其实就是双重一维数组,事实上可以看做是一个矩阵,每一行或者每一列可以作为一个一维数组。

数组在内存中是线性的连续的储存空间,以字节为单位,二维数组在内存中是一行一行存储的,这根C语言是一样的,据以上来说,数组的大小在实例化的时候就已经固定下来了,所以不可以在编译后输入数组的大小,因为也不可能编译通过,肯定会报错,还有对数组的操作过程中,要时刻注意一个数组越界问题,当抛出ArrayIndexOutOfBoundsException就代表数组越界,这是个很严重也很难察觉的问题,使用时要多加注意。

下面来介绍几个简单的数组排序算法

public class Sort {
 public void sort(int[] data){ //定义两个参数,数组首地址与数组大小
  int temp;
  for(int i=0;i<data.length;i++){ //冒泡,降序:
   for(int j=data.length-1;j>i;j--){
    if(data[i]<data[j]){ //每个数都比较n次,如果data[i]>data[j]成立,则交换两个数
     temp =data[i];
     data[i] = data[j];
     data[j] = temp;
    }
    
    for(int q=0;q<data.length;q++){
     System.out.print(data[q]+" "); //打印每一次排序后的序列
    }
    System.out.println(); //换行
   }
  }
 }
  1. 快速排序
class quicksort
{
    public int data[];
     
    private int partition(int sortArray[],int low,int hight)
    {
        int key = sortArray[low];     
        while(low<hight)
        {
            while(low<hight && sortArray[hight]>=key)
                hight--;
            sortArray[low] = sortArray[hight];
            while(low<hight && sortArray[low]<=key)
                low++;
            sortArray[hight] = sortArray[low];
        }

        sortArray[low] = key;

        return low;

    }
    public void sort(int low,int hight)

    {
        if(low<hight)
        {
            int result = partition(data,low,hight);
            sort(low,result-1);
            sort(result+1,hight);
        }
    }
  1.  快速排序是对冒泡排序的一种改进。它的基本思想是:通过一躺排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一不部分的所有数据都要小,然后再按次方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。