数组习题参考答案2011
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
//输出每行最大值 输出每行最大值 void printLineMax(int[][] a) { System.out.println("每行最大值:"); 每行最大值: 每行最大值 for (int i = 0; i < a.length; i++) { int max = a[i][0]; for (int j = 0; j < a[i].length; j++) { if (a[i][j] > max) { max = a[i][j]; } } System.out.println(max + " "); } } //输出每列最小值 输出每列最小值 void printColumnMin(int[][] a) { System.out.println("每列最小值:"); 每列最小值: 每列最小值 for (int i = 0; i < a.length; i++) { int min = a[0][i]; for (int j = 0; j < a[i].length; j++) { if (a[j][i] < min) { min = a[j][i]; } } System.out.println(min + " "); } }
/* 编程采用选择排序法实现对一维数组的元素由小到大 排序并输出。(先选择数组中最小数与第一个元素交换, 排序并输出。(先选择数组中最小数与第一个元素交换, 。(先选择数组中最小数与第一个元素交换 再选择次小数与第二个元素交换, 一共进行长度-1次选择 次选择。) 再选择次小数与第二个元素交换, 一共进行长度 次选择。) */ public static void main(String[] args) { //定义待排序的数组 定义待排序的数组 int[] ary = { 12, 8, 6, 40, 9, 10 }; //进行选择排序 进行选择排序 ary = sort(ary); //输出排序后的数组元素 输出排序后的数组元素 for (int i = 0; i < ary.length; i++) { System.out.print(ary[i] + " "); } } }
//输出每列最小值 输出每列最小值 void printColumnMin(int[][] a) { System.out.println("每列最小值:"); 每列最小值: 每列最小值 for (int i = 0; i < a.length; i++) { int min = a[0][i]; for (int j = 0; j < a[i].length; j++) { if (a[j][i] < min) { min = a[j][i]; } } System.out.println(min + " "); } }
//输出每行最大值 输出每行最大值 void printLineMax(int[][] a) { System.out.println("每行最大值:"); 每行最大值: 每行最大值 for (int i = 0; i < a.length; i++) { int max = a[i][0]; for (int j = 0; j < a[i].length; j++) { if (a[i][j] > max) { max = a[i][j]; } } System.out.println(max + " "); } }
• 实验 实验14 数组的应用 – 实验要求: 实验要求: – 2.使用数组的知识编程实现Fibonacci数列。 .使用数组的知识编程实现 数列。 数列
Fibonacci数列: ibonacci数列: 数列 1,1,2,3,5,8,13,21…… 13,21
public class Fibonacci { ibonacci数列 数列: Fibonacci数列: int[] getFibonacci(int n) { int[] a = new int[n]; 13,21…… 1,1,2,3,5,8,13,21 //设置前两个元素值 设置前两个元素值 a[0] = 1; a[1] = 1; //求余下元素值 求余下元素值 for (int i = 2; i < n; i++) { a[i] = a[i - 1] + a[i - 2]; } return a; } public static void main(String[] args) { Fibonacci fbn = new Fibonacci(); //根据需要的数列项目得到 根据需要的数列项目得到Fibonacci数列 根据需要的数列项目得到 数列 int[] f = fbn.getFibonacci(10); //输出数列中所有元素 输出数列中所有元素 for (int i = 0; i < f.length; i++) { System.out.print(f[i] + " "); } } }
(三)二维数组
• 纯上机实践
#1. 按要求编写 按要求编写Java应用程序。 应用程序。 应用程序
编写一个名为Test的主类,类中只有一个主方法; 编写一个名为 的主类,类中只有一个主方法; 的主类 在主方法中定义一个大小为50的一维整型数组 的一维整型数组, 在主方法中定义一个大小为 的一维整型数组, 数组名为x,数组中存放着{1, , 数组名为 ,数组中存放着 ,3,5,…,99}, , 输出这个数组中的所有元素,每输出十个换一行; 输出这个数组中的所有元素,每输出十个换一行;
import java.util.Scanner; public class FangZhen { //通过屏幕提示输入二维数组的行列个数和元素 通过屏幕提示输入二维数组的行列个数和元素 int[][] readArray() { Scanner reader = new Scanner(System.in); //输入二维数组的行列个数(假设是方阵) 输入二维数组的行列个数( 输入二维数组的行列个数 假设是方阵) System.out.println("请输入二维数组的行列个数(假设是方阵): 请输入二维数组的行列个数( ):"); 请输入二维数组的行列个数 假设是方阵): int n = reader.nextInt(); int[][] ary = new int[n][n]; //依次输入各个整数元素(一个元素一行) 依次输入各个整数元素(一个元素一行) 依次输入各个整数元素 System.out.println("请依次输入各个整数元素(一个元素一行): 请依次输入各个整数元素( ):"); 请依次输入各个整数元素 一个元素一行): for (int i = 0; i < n; i++) { for (int j = 0; j < n; j++) { ary[i][j] = reader.nextInt(); } } return ary; }
• 3 选择排序
– 简单选择排序
• 排序过程
– 首先通过n-1次关键字比较,从n个记录中找出关键 字最小的记录,将它与第一个记录交换。 – 再通过n-2次比较,从剩余的n-1个记录中找出关键 字次小的记录,将它与第二个记录交换。 – 重复上述操作,共进行n-1趟排序后,排序结束。
简单选择排序
k 例 i=1 初始: [ 49 13
i=2 一趟: 13
[38 65 27 j
二趟: 13 三趟: 13 四趟: 13 五趟: 13 六趟: 13 排序结束: 13
27 27 27 27 27 27
[65 38 38 38 38 38
class SortArray { static int[] sort(int[] ary) { int i, j, k, temp; int n = ary.length; //一共进行长度 次选择 一共进行长度-1次选择 一共进行长度 for (i = 0; i < n - 1; i++) { k = i; //选择本次最小元素值的下标 选择本次最小元素值的下标 for (j = i + 1; j < n; j++) { if (ary[j] < ary[k]) { k = j; } } //存放本次最小元素值 存放本次最小元素值 if (k != i) { temp = ary[k]; ary[k] = ary[i]; ary[i] = temp; } } //返回排序后的数组 返回排序后的数组 return ary; }
• 实验 实验14 数组的应用 – 实验要求: 实验要求: – 3.编程采用选择排序法实现对 . 一维数组的元素由小到大排序并输出。 一维数组的元素由小到大排序并输出。
Fra Baidu bibliotek
选择排序法: 选择排序法: 先选择数组中最小数与第一个元素交换, 先选择数组中最小数与第一个元素交换, 再选择次小数与第二个元素交换, 再选择次小数与第二个元素交换, 一共进行数组长度-1次选择 次选择。 一共进行数组长度 次选择。
• 实验 实验14 数组的应用 – 实验要求: 实验要求: – 1.编写一个程序,通过屏幕提示输入 .编写一个程序, 二维数组的行列个数(假设是方阵), 二维数组的行列个数(假设是方阵), 然后提示依次输入各个整数 元素(一个元素一行), 元素(一个元素一行), 然后编写三个方法分别求数组的每行最大值、 然后编写三个方法分别求数组的每行最大值、 每列最小值以及输出数组主对角线上的元素。 每列最小值以及输出数组主对角线上的元素。
(三)二维数组 • 习题 习题8 3. 请输出如下数组中最大的元素和最小的元素, 请输出如下数组中最大的元素和最小的元素, a[][]={ {3,2,6}, {6,8,2,10}, {5}, {12,3,23} }。 。
class MaxMin { public static void main(String[] args) { int[][] a = { { 3, 2, 6 }, { 6, 8, 2, 10 }, { 5 }, { 12, 3, 23 } }; int max = a[0][0]; int min = a[0][0]; for (int i = 0; i < a.length; i++) { for (int j = 0; j < a[i].length; j++) { if (a[i][j] > max){ max = a[i][j]; }else if (a[i][j] < min){ min = a[i][j]; } } } System.out.println("最大的元素:" + max); System.out.println("最小的元素:" + min); } }
//输出数组主对角线上的元素 输出数组主对角线上的元素 void printMainDiagonal(int[][] a) { System.out.println("主对角线上的元素:"); 主对角线上的元素: 主对角线上的元素 for (int i = 0; i < a.length; i++) { for (int j = 0; j < a[i].length; j++) { if (i == j) { System.out.print(a[i][j] + " "); } } } } public static void main(String[] args) { FangZhen f = new FangZhen(); int[][] a = f.readArray(); f.printLineMax(a); f.printColumnMin(a); f.printMainDiagonal(a); } }
k 38 j k 65 j 97 j 76 j
k 13 49 j 27 ] j k 97 j 97 [97 49 49 49 49 76 j 76 76 [76 65 65 65 49 38 ] 27 j 49 49 97 [97 76 76 j 38 ] 65 ] 65 ] 76 ] [97 ] 97