
冒泡排序算法的程序实现任务单 冒泡排序原理(升序):从最后面的一个数据起,从后往前比较相邻的两个数据,如果后面的数小于前面的数就交换,否则不交换。 表 1 原始顺序 d(1) d(2) d(3) d(4) 有无交换 比较次数 交换次数 180 150 170 160 第1遍(趟)加工(排序) 180 150 160 170 有 3 2 180 150 160 170 无 150 180 160 170 有 第2遍加工 150 180 160 170 无 2 1 150 160 180 170 有 第3遍加工 150 160 170 180 有 1 1 最终顺序 150 160 170 180 总共6次 总共4次 打开“3.4.2 素材文件/01算法程序实现”文件夹中“冒泡排序.vbp”文件。 任务一:前大后小,则交换 实现如下功能———如果d(4)小于d(3),则交换元素中的数据。 调试运行,点击“冒泡排序”按钮后结果如图1所示。 图 1 思考(无需填空):如果d(4)元素中下标4用变量j表示为d(j),则d(___)就能表示d(3)?修改刚书写的代码,将d(4)、d(3)替换为d(j)、d(___)。 任务二:变量j控制下标变化 打开“02冒泡排序加工过程.xlsx”,填写第1遍加工中数组元素下标的变化。 思考(无需填空):如何利用变量j控制数组d下标从___变到____,实现元素两两比较,并冒出最小数到最前。 调试运行,点击“冒泡排序”按钮后结果如图2所示。 图 2 任务三:变量i控制加工遍数 打开“02冒泡排序加工过程.xlsx”,完成表格剩余部分填空。 思考(无需填空):①利用变量i控制加工遍数,即重复执行“任务二程序段”____遍。 ②观察excel表格,每一遍加工中j的初值都为___,而j的终值在第1遍中为__,第2遍中为__,第3遍中为__。j终值和加工遍数i的关系? 编写代码,实现图3所示结果。 图 3 思考(无需填空):如果对包含n个元素的数组d进行从后往前冒泡排序(升序),如何修改程序? 任务四:统计比较和交换的次数 利用计数器,将比较次数a和交换次数b的值进行统计。 编写代码,实现图4所示结果。 图 4 拓展练习 学校即将举行“十佳歌手”比赛,秉着公平公开原则,晓明利用VB设计完成以下功能的打分软件:输入6个评委所给的分值(可能为非整数),然后去掉一个最高分,去掉一个最低分,对剩下的分数取其平均值便是该选手的最终得分。 打开“02校园歌手比赛排序(程序段)”文件中的“校园歌手比赛.vbp”,完成代码设计,若输入依次输入88.5、99.5、92、95、94、93,结果如图5所示。 图 5
~~ 您好,已阅读到文档的结尾了 ~~