阅读程序 · 答案 i <= n - 1 And flag = TrueStr(i - 1)
← 整套速查表 浙江高考信息技术 全部真题【加试题】 n个数据的冒泡排序需要经过n-1遍加工,每一遍加工自下而上比较相邻两个数据,把较小者交换到上面。小刘发现:当某一遍加工过程中没有数据交换,说明数据已经有序,无需进一步加工。为此,小刘对算法进行优化,编写了一个VB程序,功能如下:运行程序时,在列表框List1中显示排序前数据,单击“排序”按钮command1,在列表框List2中显示这些数据升序后的结果,在标签Label3中显示排序过程的加工遍数。运行效果如第16题图所示。 
实现上述功能的VB代码如下,但加框处代码有错,请改正。 
这题考冒泡排序的优化逻辑和VB字符串拼接。拿到题先想:优化怎么实现?flag标记有无交换,若某遍没交换直接跳出;输出遍数时注意VB里数字转字符串要加Str(),且遍数i从1开始,对应数组下标i-1。
冒泡排序中,若某遍没有发生任何数据交换,说明数组已经有序,无需继续比较,此时应提前退出循环。VB中若使用flag标记交换情况,退出条件需同时满足“遍历完当前趟”和“flag为真(即未发生交换)”。另外,输出遍数时,VB的Str函数会将数字转为字符串,若直接用i输出,可能因类型不匹配导致错误,应使用Str(i-1)确保正确拼接。
本题考查冒泡排序的基本原理及其优化策略,同时涉及VB语言中字符串拼接的语法细节。冒泡排序通过相邻元素比较并交换,使较大元素逐步“冒泡”至末尾。优化核心在于:若某一趟遍历中未发生任何交换,说明数组已有序,可立即终止,避免多余比较。