马晓萍
(喀什大学 计算机科学与技术学院,新疆喀什 844000)
冒泡排序是一种典型的、稳定排序算法[1],对初次接触程序语言的学习者来说,排序算法比较抽象,对算法的理解存在较大的障碍。如何让学生更好直观的理解排序算法的原理并用程序语言实现,是一个值得研究的问题。Unity3D 是一款实时3D 互动内容创作和运营平台,所提供的可视化、实时三维动画等类型互动内容[2],具有强大的交互功能和丰富的三维表现。利用Unity3D 实现冒泡排序算法动态可视化,是一种有效的算法可视化方式,可促进学习者对冒泡排序算法的理解。
在程序设计语言的排序算法中,冒泡排序是一种平方级的原地排序算法[3]。冒泡排序算法的原理:在待排序的一组数中,将相邻的两个数值进行比较,若前面的数值比后面的数值大就交换两数,把小数值放在前面,否则不交换;直至最终完成从小到大的排序。[4]
冒泡排序算法的程序描述(C#语言)如下:


上述代码中,通过外层for循环,用数组的长度控制整体程序的运行次数,内层for用于与前后两位数比较大小,如果存在第一个数比第二个数大,则两个数利用中间变量temp,实现交换的逻辑。
在Unity 中设计由一个Panel 容器控件,一个Text 文本控件,两个Button 按钮控件组成的UI 界面。Text控件文本内容为“冒泡排序法三维动态可视化”,当单击“随机生成数据”按钮时,在Panel 容器控件上逐个动态生成随机数据柱状图效果,此案例中随机生成9 个1~100 的整数,并产生以该整数作为动态柱状图的高度。……