Loading... **一、目的要求** 1、掌握工程问题的求解方法及程序分析方法; 2、掌握程序的算法流程设计; 3、学习基本的程序设计策略; 4、学习算法的编程实现。 **二、实验环境** 硬件平台:计算机CPUi5以上,内存8G以上; 软件平台:windows7或以上版本,vscode。 **三、实验内容** 1、 归并排序算法具有高效、快速的优点,广泛应用于移动终端设备的软件应用界面(例如百度地图路径优化、购物网站商品排序等)的后台管理程序模块,分析归并排序算法的代码实现过程(参考《程序设计基础(C语言)实验指导与测试(第3版)》中P66页程序二)。 要求: (1) 针对问题开展程序算法分析; (2) 子函数定义具有模块化的设计思想; (3) 函数和变量定义要规范化; (4) 文件头和函数定义要有规范注释。 2、 编写程序处理若干个学生的信息,每个学生的信息包括:学号、姓名、三门成绩及平均分。要求从键盘输入的学生数据用一个函数实现,并存入文件,用一个函数打开此文件后,求出各位同学的平均分,输出函数可以输出所有同学的成绩表(包括每个学生的学号、姓名、三门成绩及平均分数)也可以输出平均分在前3名的学生姓名及平均分。主函数可以方便地调用以上函数。请给出设计思路,关键语句说明(选作)。 ```c function sort(arr, startIndex = 0, endIndex = arr.length - 1) { // 递归结束条件:startIndex大于等于endIndex的时候 if (startIndex >= endIndex) { return; } // 折半递归 let midIndex = parseInt((startIndex + endIndex) / 2); sort(arr, startIndex, midIndex); sort(arr, midIndex + 1, endIndex); // 将两个有序的小数组,合并成一个大数组 merge(arr, startIndex, midIndex, endIndex); } function merge(arr, startIndex, midIndex, endIndex) { // 新建一个大数组 let tempArr = []; let p1 = startIndex; let p2 = midIndex + 1; let p = 0; // 比较两个有序小数组的元素,依次放入大数组中 while (p1 <= midIndex && p2 <= endIndex) { if (arr[p1] <= arr[p2]) { tempArr[p++] = arr[p1++]; } else { tempArr[p++] = arr[p2++]; } } // 右侧小数组已排序完毕,左侧小数组还有剩余,将左侧小数组元素依次放入大数组尾部 while (p1 <= midIndex) { tempArr[p++] = arr[p1++]; } // 左侧小数组已排序完毕,右侧小数组还有剩余,将右侧小数组元素依次放入大数组尾部 while (p2 <= endIndex) { tempArr[p++] = arr[p2++]; } for (let i = 0; i < tempArr.length; i++) { arr[i + startIndex] = tempArr[i]; } } let arr = [4, 5, 8, 1, 7, 2, 6, 3]; sort(arr); console.log(arr); ``` 第二个实验为选做 最后修改:2023 年 08 月 05 日 © 允许规范转载 赞 1 如果觉得我的文章对你有用,请随意赞赏