数组是最常用的数据结构,没有理由用不好此种数据结构。
1 一维数组
以冒泡算法为例
public int[] bubbleSort(int[] array){ for(int i=0; i<array.length -1; i++){ for(int j=0; j<array.length -1 -i; j++){ int temp =0; if(array[j] > array[j + 1]){ temp = array[j]; array[j] = array[j+1]; array[j+1] = temp; } } } return array; }
2 二维数组
二维数组在编程中也比较常用,如扫雷、以及棋类游戏中算法的数据结构一般是二维数组。
实际开发中用到二维数组或面试中问到冷不丁会卡壳,非常不应该
声明二维数组
静态:
String[][] args=new String[][]{{"dsadsa","ddsa"},{"dsadsar","dddd","wwww"},{"dsadsa"}};
String[][] array=new String[m][n]; for(int i=0;i<array.length;i++){//遍历纵向的数据 for(int j=0;j<array[i].length;j++){//遍历横向的数据 System.out.print(array[i][j]+"a"+"\t"); } }
杨辉三角
/** * * @author wan.yang * @date 2013-12-30 * @version 1.0 * <p>二维数组 杨辉三角: </p> * * 不规则二维数组 * 运算规律为: * a[m][n]=a[m-1][n-1]+a[m-1][n]; 当m=n或者n=0时,杨辉三角形的元素a[m][n]=1; 否则,杨辉三角形的元素a[m,n]=a[m-1,n-1]+a[m-1,n] 。 例: 1 1 1 1 2 1 1 3 3 1 */ public class YangHuiTriangle { /** * * @param n 行数 */ public int[][] paint(int n){ int[][] array = new int[n][]; for(int i=0; i<n; i++){ //行数 array[i] = new int[i+1]; //分配第二维空间 for(int j=0; j<=i; j++){ //列数的判断也是一个难点 if(i==j || j==0){ array[i][j] = 1; }else{ array[i][j] = array[i-1][j-1] + array[i-1][j]; } } } return array; } /** * 打印函数 * @param array */ public void display(int[][] array){ if(null == array) return; for(int i=0; i<array.length; i++){ for(int j=0; j<array[i].length; j++){ if(i == j){ System.out.println(array[i][j]); }else{ System.out.print(array[i][j] + " "); } } } } public static void main(String[] args){ YangHuiTriangle yht = new YangHuiTriangle(); int[][] array = yht.paint(4); System.out.println("打印开始-------"); yht.display(array); System.out.println("打印结束-------"); } }