资讯专栏INFORMATION COLUMN

JavaScript实现冒泡排序 可视化

RebeccaZhong / 1976人阅读

摘要:说明上次写了实现冒泡排序,只是简单的说了冒泡排序算法是什么,怎么实现,这次来实现将冒泡排序的过程展现出来。总结上面的两个版本的思路基本一样,用一句话概括就是,记录冒泡排序所有的改变,将这些改变一步一步的显示出来。

说明

上次写了 JavaScript实现冒泡排序 ,只是简单的说了冒泡排序算法是什么,怎么实现,这次来实现将冒泡排序的过程展现出来。

解释

先来个简单的版本,看效果图

实现这个效果,思路是这样的
1、先将需要排序的数组,进行冒泡排序,记录每一步的内容,存放在一个数组中
2、利用canvas,实现一个 darw 方法,能将一步的内容画到页面上
3、实现动画效果,利用定时器,每隔一段时间,调用 darw 方法,画出一步到页面上

实现这个效果还是需要会一点点canvas的,比如知道怎么画个长方形,怎么写几个字,换个颜色,如果不会的话,请到这里去看看。

代码





  
  




  

看上面的代码,能看出,实现效果主要靠的是三个函数
1、sort,实现冒泡排序,返回包括每一步的数组
2、darw ,画出一步的内容
3、animation ,实现动画效果,定时调用darw 方法

上面实现的是比较简单的一版,下来看一版更加漂亮的,这是我在Codepen上找到的,改了些代码后,是这样了,看图

这一版比上一版要好看很多,但是思路其实一样,都是需要一个包含每一步内容的数组,遍历数组,定时执行操作,实现动画效果。不同的地方就在于,这一版把每一步分的更细了,每一步都有不同的类型。

这一版是使用vue做的,在vuex中的mutations定义了 6个方法 来实现效果
1、reset,重置,
2、swap,交换,实现图中两个绿色div,进行位移,
3、activate,激活,实现图中两个红色div,变成绿色,
4、deactivate,释放,实现图中两个绿色div,恢复成红色,
5、lock,锁定,实现找到一个最大值后,将它变成蓝色,
6、done,完成,返回 true 表示排序完成。
点这里下载代码 ,代码里加了很详细的注释,非常容易看懂。

总结

上面的两个版本的思路基本一样,用一句话概括就是,记录冒泡排序所有的改变,将这些改变一步一步的显示出来。

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/93969.html

相关文章

  • JavaScript 数据结构与算法之美 - 冒泡排序、插入排序、选择排序

    摘要:之所以把冒泡排序选择排序插入排序放在一起比较,是因为它们的平均时间复杂度都为。其中,冒泡排序就是原地排序算法。所以冒泡排序是稳定的排序算法。选择排序思路选择排序算法的实现思路有点类似插入排序,也分已排序区间和未排序区间。 showImg(https://segmentfault.com/img/bVbuvnj?w=900&h=250); 1. 前言 算法为王。 想学好前端,先练好内功,...

    canger 评论0 收藏0
  • JavaScript实现冒泡排序

    说明 对数组进行 冒泡排序 算是比较简单的,冒泡排序也是容易理解的一种排序算法了,在面试的时候,很可能就会问到。 实现原理 数组中有 n 个数,比较每相邻两个数,如果前者大于后者,就把两个数交换位置;这样一来,第一轮就可以选出一个最大的数放在最后面;那么经过 n-1(数组的 length - 1) 轮,就完成了所有数的排序。 showImg(https://segmentfault.com/img...

    Aomine 评论0 收藏0
  • JavaScript 数据结构与算法之美 - 十大经典排序算法汇总

    摘要:笔者写的数据结构与算法之美系列用的语言是,旨在入门数据结构与算法和方便以后复习。这应该是目前较为简单的十大经典排序算法的文章讲解了吧。比如原本在的前面,而,排序之后,在的后面十大经典排序算法冒泡排序思想冒泡排序只会操作相邻的两个数据。 showImg(https://segmentfault.com/img/bVbvHet); 1. 前言 算法为王。想学好前端,先练好内功,内功不行,就...

    zsy888 评论0 收藏0
  • JavaScript 版各大排序算法

    摘要:推荐一下,,这里还有个可视化的排序博客,各大排序算法的实现都栩栩如生。堆排序堆排序是指利用堆这种数据结构所设计的一种排序算法。共勉参考维基百科排序搜索聊一聊排序算法秒杀种排序算法版排序图解排序算法实现欢迎来我的博客交流 最近看到了很多公司都在准备明年的实习校招,虽然离三月份还有一段时间,感觉已经可以准备了。在网上看了一些排序算法和数组去重操作,感觉都写的很好,心血来潮,也来写一写。 s...

    FrozenMap 评论0 收藏0
  • 优秀程序员都应该学习的 GitHub 上开源的数据结构与算法项目

    摘要:强烈推荐上值得前端学习的数据结构与算法项目,包含图的演示过程与视频讲解。该仓库包含了多种基于的算法与数据结构,提供进一步阅读的解释和链接。数据结构和算法必知必会的个代码实现。 showImg(https://segmentfault.com/img/bVbvpYZ); 前言 算法为王。想学好前端,先练好内功,内功不行,就算招式练的再花哨,终究成不了高手;只有内功深厚者,前端之路才会走得...

    cheukyin 评论0 收藏0

发表评论

0条评论

RebeccaZhong

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<