Lyrics


< More and better />


数组拷贝 排序 二维数组.md

数组拷贝

  • System中的一个静态方法。

  • public static native void arraycopy(Object src, int srcPos, Object dest, int destPos, int length);

  • 参数解释: src: 源数组

    ​ srcPos: 源数组的起始位置

    ​ dest: 目标数组

    destPos:目标数组的起始位置     
    

    ​ length:拷贝的数组元素个数

排序算法(以下均为部分代码段)

  1. 冒泡排序

    public static void sort(Comparable[] a){

    for (int i=1; i<=a.length; i++) {
        boolean flag = true;
        for (int j=0; j<a.length-i; j++) {
            if (a[j]>a[j+1]) {
                exchange(a[j],a[j+1]);
            }
        }
    }
    

    }

  2. 插入排序

    public static void sort(Comparable[] a){

    for (int i=1; i<a.length; i++) {
        boolean flag = true;
        for (int j=i; j>0 && a[j]<a[j-1]; j--) {
            exchange(a[j],a[j-1]);
        }
    }
    

    }

  3. 快速排序

    public static void sort(Comparable[] a, int start, int end){

    if (end<=start) {
        return;
    }
    int j = partition(a, start, end);  //切分
    sort(a, start ,j-1);
    sort(a, j+1,end);
    

    }

    private static int partition(Comparable[] a, int start, int end){

    int i = start, j = end+1;  //左右扫描指针
    Comparable v = a[start];  //切分元素
    while(true){
        while(a[++i]<v) if(i==end) break;
        while(v<a[--j]) if(j==start) break;
        if(i>=j) break;
        exchange(i,j);
        return
    }
    

    }

    二维数组

  • 数据类型[][]组名称=new 数据类型[行的个数][列的个数];

注意:二维数组的length属性就是它所包含的“行的个数”。

  • 访问语法:数组名称[行的索引][列的索引]

  • 静态初始化:数据类型[][] 数组名称={

    ​ {元素1,元素2……},

    ​ {元素1,元素2……},

    ​ ……

    ​ };