专题四 数组、字符串、包(一)(讲义)-《计算机程序设计》(电工版第二版)高考备考讲练测(吉林省)

2024-09-19
| 12页
| 151人阅读
| 1人下载
精品

内容正文:

数组、字符串、包(一) [考纲要求] 考试内容: 一维数组、二维数组。 知识点要求: 1.掌握一维数组、二维数组的声明、创建和初始化。 2.理解数组的大小和元素默认值。 3.掌握数组元素的使用。 [课时安排] 2课时 [知识梳理] 一.数组 把具有相同类型的若干变量按有序的形式组织起来,用统一的名字来表示,这些按序排列的相同类型的数据元素的集合被称为数组。 简言之,数组是相同类型的数据按顺序组成的一种复合数据类型。 二.一维数组的声明及创建 (1)声明一维数组 声明一维数组包括数组的名字、数组中包含的元素的数据类型。 声明一维数组有以下两种格式: 格式1:数组元素类型数组名[]; 格式2:数组元素类型[]数组名; 在实际编程中,第二种格式(int[] numbers;)更为常见,它将数组类型(由元素类型和方括号表示)视为一个整体,这有助于提高代码的可读性。数组的声明仅确定了内存中有一个特定类型的数组名,但未实际创建数组,还需为其分配元素空间并指明元素个数。 (2)创建数组 创建数组则是为数组元素分配内存单元,形成一个数组对象,可通过new 关键字创建。 步骤: ① 数组元素类型 数组名字[]; ② 数组名字 = new 数组元素类型[数组元素的个数]; 将声明与创建两步合并为一步来完成数组创建: 数组元素类型 数组名字[] = new 数组元素的类型[数组元素的个数]; 三.一维数组的使用及初始化 静态初始化 在声明数组的同时,直接给出数组元素的值。 动态初始化 在声明数组后,使用 new 关键字分配内存空间。 四.一维数组的遍历 (1)使用传统的for循环:这是最常见的方法,通过索引来遍历数组。 (2)使用增强型for循环(for-each循环) Java 5及以上版本提供了增强型for循环,这使得遍历数组更加简洁。 (3)使用Iterator(通过将数组转换为List) 虽然不是直接遍历数组,但可以将数组转换为List,然后使用Iterator来遍历。 五.一维数组的最值 思路: (1)初始化数组:首先,你需要有一个已经填充了数据的一维数组。 (2)设置初始最大值和最小值:通常,我们将数组的第一个元素设置为初始的最大值和最小值。 (3)遍历数组:通过循环遍历数组中的每个元素,并与当前的最大值和最小值进行比较。 (4)更新最大值和最小值:如果在遍历过程中发现更大的值,则更新最大值;如果发现更小的值,则更新最小值。 (5)输出结果:在遍历完成后,输出最大值和最小值。 示例代码 注意事项: 确保数组不为空,否则在尝试访问array[0]时会抛出ArrayIndexOutOfBoundsException。 如果数组可能包含null值(对于对象数组),则需要在代码中添加适当的检查。 如果数组非常大,考虑使用并行流(Java 8及以上版本)来提高查找效率。 六.一维数组的排序 (1)使用Java内置的排序方法 Java提供了Arrays.sort()方法,可以很容易地对数组进行排序。这个方法使用了快速排序算法,对于原始数据类型(如int、float等)的数组,非常高效。 (2)使用冒泡排序算法(Bubble Sort) 基本原理: 1) 比较相邻的元素:首先,比较数组中的相邻元素。如果第一个比第二个大(或者第一个比第二个小,取决于排序的顺序),则交换它们的位置。 2) 遍历数列:对数列进行遍历,重复步骤1,直到没有再需要交换的元素为止。这意味着该数列已经排序完成。 3) 重复上述步骤:对数列进行多轮遍历,每次遍历都会将一个元素放到它应该在的位置上。在第一轮遍历后,数列中最大的元素会被放在最后一个位置上;在第二轮遍历后,数列中第二大的元素会被放在倒数第二个位置上,依此类推。 4) 结束条件:当数列中的元素已经全部排好序时,排序过程结束 示例代码 冒泡排序算法的实现相对简单,但效率相对较低。对于一个有n个元素的数组,冒泡排序的时间复杂度为O(n^2),空间复杂度为O(1)。这意味着当数组元素较多时,冒泡排序可能不是最优的选择。 (3)选择排序(Selection Sort) 工作原理是:首先在未排序的数组中找到最小(或最大)的元素,然后将其与数组的第一个元素交换位置。接着在剩下的未排序元素中找到最小(或最大)的元素,并将其与数组的第二个元素交换位置。这个过程一直重复,直到整个数组都被排序。 操作步骤: 1) 初始化:设置一个变量min来跟踪最小元素的位置。 2) 遍历数组:从数组的第二个元素开始,遍历数组,找到最小(或最大)元素。 3) 交换位置:将找到的最小(或最大)元素与当前最小元素的位置交换。 4) 重复步骤2和3:重复步骤2和3,每次都减少比较的范围,直到整个数组都被排序。 示例代码 选择排序的时间复杂度为O(n^2),空间复杂度为O(1)。这意味着选择排序在处理大型数组时效率较低. 七.二维数组的声明及使用 在Java中,二维数组(有时也称为矩阵)是一个数组的数组,即一个数组中的每个元素都是一个数组。二维数组的声明和初始化与一维数组类似,但是需要指定行数和列数。 声明二维数组 二维数组的声明格式为: dataType[][] arrayName; 其中,dataType 是数组中元素的数据类型,arrayName 是数组的名称。 初始化二维数组方式 (1)静态初始化 在声明数组的同时,直接给出数组元素的值。 动态初始化 在声明数组后,使用 new 关键字分配内存空间。 八.二维数组元素 (1)访问二维数组元素 二维数组元素可以通过索引来访问,索引从0开始。行索引在前,列索引在后。 int element = matrix[1][2]; // 获取第2行第3列的元素 (2)修改二维数组元素 可以直接通过索引修改二维数组元素的值。 matrix[1][2] = 10; // 修改第2行第3列的元素为10 九.遍历二维数组 可以使用嵌套的for循环来遍历二维数组。 [限时练习] 1. 以下可以声明并初始化一个包含5个元素的int数组,元素值分别为1, 2, 3, 4, 5的是( ) A. int[] numbers = {1, 2, 3, 4, 5}; B. int numbers[5] = {1, 2, 3, 4, 5}; C. int numbers = new int[5]{1, 2, 3, 4, 5}; D. int numbers = new int[]{1, 2, 3, 4, 5}; D. 对象可以直接访问类的成员变量和成员方法 【答案】A 2. 以下方式可以访问二维数组matrix中第2行第3列的元素的是( ) A. matrix[2, 3]; B. matrix[1][2]; C. matrix[3][2]; D. matrix[2][3]; 【答案】B 【解析】二维数组元素的访问方式是matrix[行索引][列索引],索引从0开始。因此,选项B正确。 3. 以下方式可以创建一个名为matrix的二维数组,并指定数组有3行2列的是( ) A. int matrix[][] = new int[3][2]; B. int[][] matrix = new int[2][3]; C. int matrix[3][2] = new int[][]; D. int[][] matrix = new int[][2]; 【答案】A 【解析】 创建二维数组的格式是“数据类型[][] 数组名 = new 数据类型[行数][列数]”。因此,选项A正确。 4以下可以访问一维数组numbers中的第3个元素的是( ) A. numbers[2] B. numbers[3] C. numbers[1] D. numbers[0] 【答案】A 【解析】 一维数组的索引从0开始,因此第3个元素的索引是2。因此,选项A正确 5. 以下可以创建一个名为matrix的二维数组,并初始化其所有元素为0的是( ) A. int[][] matrix = new int[3][2]; B. int[][] matrix = new int[3][2]{}; C. int[][] matrix = new int[][]{{0, 0}, {0, 0}, {0, 0}}; D. int[][] matrix = new int[3][2]{0}; 【答案】C 【解析】选项A:创建了一个3行2列的二维数组,但没有初始化元素,元素值默认为0。 选项B:与选项A相同,创建了一个3行2列的二维数组,但没有初始化元素。 选项D:语法错误,无法创建一个二维数组,只包含一个元素为0的数组。 6.数组必须先声明后创建才能使用。( ) 【答案】正确 【解析】 数组声明只是告诉编译器要创建一个数组变量,但并未分配内存。只有通过创建(使用new关键字)才能为数组分配内存并使其可用。 7. Java中的数组类型可以包含不同类型的数据元素。( ) 【答案】错误 【解析】 Java中的数组类型必须是统一的,即数组中所有元素的数据类型必须相同。 8.冒泡排序算法的时间复杂度为O(n log n)。( ) 【答案】错误 【解析】冒泡排序算法的时间复杂度为O(n^2),即其效率较低,不适合用于大型数组。 9.二维数组元素可以通过索引访问和修改。( ) 【答案】正确 【解析】二维数组元素可以通过行索引和列索引访问和修改,例如:matrix[1][2] 表示访问第2行第3列的元素。 10. 创建一个一维数组,包含10个随机整数(1-100),计算并输出数组元素的总和。 【答案】 11. 创建一个一维数组,包含10个随机整数(1-100),找出并输出数组中的最大值和最小值。 【答案】 12. 创建一个一维数组,包含10个随机整数(1-100),使用冒泡排序算法对数组进行升序排序,并输出排序后的数组。 【答案】 13.创建一个一维数组,包含10个随机整数(1-100),找出并输出数组中的所有素数。 【答案】 [归纳小结] 学科网(北京)股份有限公司 $$

资源预览图

专题四 数组、字符串、包(一)(讲义)-《计算机程序设计》(电工版第二版)高考备考讲练测(吉林省)
1
专题四 数组、字符串、包(一)(讲义)-《计算机程序设计》(电工版第二版)高考备考讲练测(吉林省)
2
专题四 数组、字符串、包(一)(讲义)-《计算机程序设计》(电工版第二版)高考备考讲练测(吉林省)
3
所属专辑
由于学科网是一个信息分享及获取的平台,不确保部分用户上传资料的 来源及知识产权归属。如您发现相关资料侵犯您的合法权益,请联系学科网,我们核实后将及时进行处理。