二维数组应用

1./*

 * 使用二维数组打印一个 10 行杨辉三角。

 

【提示】

 1. 第一行有 1 个元素, 第 n 行有 n 个元素

 2. 每一行的第一个元素和最后一个元素都是 1

 3. 从第三行开始, 对于非第一个元素和最后一个元素的元素。即:

yanghui[i][j] = yanghui[i-1][j-1] + yanghui[i-1][j];

 * 

 */

public class YangHuiTest {

 

public static void main(String[] args) {

//1.声明并初始化二维数组

int[][] yangHui = new int[10][];

 

//2.给数组的元素赋值

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

yangHui[i] = new int[i + 1];

 

//2.1 给首末元素赋值

yangHui[i][0] = yangHui[i][i] = 1;

//2.2 给每行的非首末元素赋值

//if(i > 1){

for(int j = 1;j < yangHui[i].length - 1;j++){

yangHui[i][j] = yangHui[i-1][j-1] + yangHui[i-1][j];

}

//}

}

 

 

//3.遍历二维数组

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

for(int j = 0;j < yangHui[i].length;j++){

System.out.print(yangHui[i][j] + "  ");

}

System.out.println();

}

 

} 

 

}

2.

 

2./*

 * 算法的考查:求数值型数组中元素的最大值、最小值、平均数、总和等

 * 

 * 定义一个int型的一维数组,包含10个元素,分别赋一些随机整数,

 * 然后求出所有元素的最大值,最小值,和值,平均值,并输出出来。

 * 要求:所有随机数都是两位数。

 * 

 * [10,99]

 * 公式:(int)(Math.random() * (99 - 10 + 1) + 10)

 * 

 */

注意初值设定 不能为0 应为数组的某一个元素 默认第一个元素 arr[0] (负数时)

 

3.

/*

 * 使用简单数组

(1)创建一个名为ArrayExer2的类,在main()方法中声明array1和array2两个变量,他们是int[]类型的数组。

(2)使用大括号{},把array1初始化为8个素数:2,3,5,7,11,13,17,19。

(3)显示array1的内容。

(4)赋值array2变量等于array1,修改array2中的偶索引元素,使其等于索引值(如array[0]=0,array[2]=2)。打印出array1。

 * 

 * 思考:array1和array2是什么关系?array1和array2地址值相同,都指向了堆空间的唯一的一个数组实体。

 * 拓展:修改题目,实现array2对array1数组的复制

 */

public class ArrayExer2 {

public static void main(String[] args) {  //alt + /

int[] array1,array2;

 

array1 = new int[]{2,3,5,7,11,13,17,19};

 

//显示array1的内容

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

System.out.print(array1[i] + "\t");

}

 

//赋值array2变量等于array1

//不能称作数组的复制。

array2 = array1;

 

//修改array2中的偶索引元素,使其等于索引值(如array[0]=0,array[2]=2)

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

if(i % 2 == 0){

array2[i] = i;

}

 

}

System.out.println();

//打印出array1

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

System.out.print(array1[i] + "\t");

}

}

}

 

/*

 * 算法的考查:数组的复制、反转、查找(线性查找、二分法查找)

 * 

 * 

 */

public class ArrayTest2 {

 

public static void main(String[] args) {

 

String[] arr = new String[]{"JJ","DD","MM","BB","GG","AA"};

 

 

//数组的复制(区别于数组变量的赋值:arr1 = arr)

String[] arr1 = new String[arr.length];

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

arr1[i] = arr[i];

}

 

//数组的反转

//方法一:

// for(int i = 0;i < arr.length / 2;i++){

// String temp = arr[i];

// arr[i] = arr[arr.length - i -1];

// arr[arr.length - i -1] = temp;

// }

 

//方法二:

// for(int i = 0,j = arr.length - 1;i < j;i++,j--){

// String temp = arr[i];

// arr[i] = arr[j];

// arr[j] = temp;

// }

 

//遍历

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

System.out.print(arr[i] + "\t");

}

 

System.out.println();

//查找(或搜索)

//线性查找:

String dest = "BB";

dest = "CC";

 

boolean isFlag = true;

 

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

 

if(dest.equals(arr[i])){                  // int 用 ==     String用equals 

System.out.println("找到了指定的元素,位置为:" + i);

isFlag = false;

break;

}

 

}

if(isFlag){

System.out.println("很遗憾,没有找到的啦!");

 

}

//二分法查找:(熟悉)

//前提:所要查找的数组必须有序。

int[] arr2 = new int[]{-98,-34,2,34,54,66,79,105,210,333};

 

int dest1 = -34;

dest1 = 35;

int head = 0;//初始的首索引

int end = arr2.length - 1;//初始的末索引

boolean isFlag1 = true;

while(head <= end){

 

int middle = (head + end)/2;

 

if(dest1 == arr2[middle]){

System.out.println("找到了指定的元素,位置为:" + middle);

isFlag1 = false;

break;

}else if(arr2[middle] > dest1){

end = middle - 1;

}else{//arr2[middle] < dest1

head = middle + 1;

}

 

 

}

 

if(isFlag1){

System.out.println("很遗憾,没有找到的啦!");

}

 

 

}

}

/*

 * 使用简单数组

 * 拓展:修改题目,实现array2对array1数组的复制

 */

public class ArrayExer3 {

public static void main(String[] args) {  //alt + /

int[] array1,array2;

 

array1 = new int[]{2,3,5,7,11,13,17,19};

 

//显示array1的内容

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

System.out.print(array1[i] + "\t");

}

 

//数组的复制:

array2 = new int[array1.length];

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

array2[i] = array1[i];

}

 

 

//修改array2中的偶索引元素,使其等于索引值(如array[0]=0,array[2]=2)

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

if(i % 2 == 0){

array2[i] = i;

}

 

}

System.out.println();

//打印出array1

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

System.out.print(array1[i] + "\t");

}

}

}

 

posted @ 2020-01-31 11:24  DoBetteri  阅读(548)  评论(0编辑  收藏  举报