Java之数组及常用算法

一、一维数组

  1. List item

1、声明:

int a[]; int []b;

2、初始化:

动态初始化:1、a=new int[2]; int[0]=1;...

动态初始化:2、b=new b[]{3,4};

静态初始化:int [] c={5,6};

3、数组常用的方法:

排序:Array.sort();

查找:Array.binarySearch();

打印:Array.toString();

复制:Array.copyof();

4、常用操作

1、冒泡排序

for(int i=0;i<a.length-1;i++){//控制外循环的次数

    for(int j=0;j<a.length-1-i;j++){//控制内循环次数,比外循环少一次,与下一个比较

        if(a[j]>a[j+1]){

            int temp=a[j];

            a[j]=a[j+1];

            a[j+1]=temp;

        }

    }

}

2、选择排序

for (int i = 0; i < a.length-1; i++) {

    int k=i;

    for (int j = i; j < a.length-1; j++) {

        if (a[k]>a[j+1]) {

            k=j+1;

        }

    }

    if(i!=k){

        int temp=a[i];

        a[i]=a[k];

        a[k]=temp;

    }

}

3、顺序查找

public static int find(int []b,int a){

for (int i = 0; i < b.length; i++) {

    if (a==b[i]) {

        return i;

    }

}

return -1;

}

4、二分查找

public static int find(int b[],int a){

int max=b.length-1;

int min=0;

for (int i = 0; i < b.length; i++) {

    int midle=(max+min)/2;

    if(a==b[midle]){

        return midle;

    }else if(a>b[midle]){

       min=midle+1;

    }else if(a<b[midle]){
        max=midle-1;
    }
}
return -1;

}

public static int find(int b[],int a){

    int max=b.length-1;

    int min=0;

    for (int i = 0; i < b.length; i++) {

        int midle=(max+min)/2;

        if(a==b[midle]){

            return midle;

        }else if(a>b[midle]){

           min=midle+1;

        }else if(a<b[midle]){
            max=midle-1;
        }
    }
return -1;

}