前端动画演绎排序算法
文章包含多个可交互案例,可通过博客原文实时查看案例
在学习了常用的排序算法之后,打算用动画Demo来生动形象的展现它们。
这里包含6种排序算法,其中一半是简单算法,另一半是高级算法:
- 冒泡排序
- 选择排序
- 插入排序
- ~
- 归并排序
- 希尔排序
- 快速排序
冒泡排序
这可能是最简单的一种,但是速度非常慢。
假设我们按照棒球运动员的身高来排列队列。从最左边开始。
- 比较两个球员
- 如果左边的高一些,就换掉。否则,不做任何操作。
- 向右移动一个位置
选择排序
也从最左边开始。
- 寻找从当前位置到右边的最矮球员
- 将最矮球员与当前位置的球员交换
- 向右移动一个位置
插入排序
在大多数情况下,这是基础排序方法中的最佳方法。它的速度是冒泡排序的两倍。
而具体步骤比上面的排序稍微复杂一些。从左边的开始。
- 部分排序左球员
- 选择第一个未排序的球员作为标记球员
- 将比标记球员矮的球员移到右边
- 将标记的球员插入到第一个移动过位置的球员的前一个位置。
合并排序
合并排序算法的核心是两个已经排序的数组的合并和递归。
如图所示,主要步骤如下:
- 将数字分成两部分
- 合并两部分
希尔排序
“Shell排序”的名称是以发现它的Donald Shell命名的。它基于插入排序,但是增加了一个新特性,从而极大地提高了插入排序的性能。
主要步骤
- 将数组按区间(例如3)划分为若干组,并对它们进行一直排序,直到所有元素都被划分和排序为止。
- 缩小区间,继续进行分割和排序,直到区间变为1。
快速排序
在大多数情况下,这是最快的排序。
- 选择一个参考元素(最右边的元素)
- 将数组划分为左子数组(比参考元素小的所有元素)和右子数组(比参考元素大的所有元素)
- 对左子数组和右子数组重复步骤2
感谢你花时间阅读这篇文章。如果你喜欢这篇文章,欢迎点赞、收藏和分享,让更多的人看到这篇文章,这也是对我最大的鼓励和支持!
欢迎订阅我的博客。
相关推荐
randy0 2020-11-17
lixiaotao 2020-10-07
美丽的泡沫 2020-09-08
nongfusanquan0 2020-08-18
hang0 2020-08-16
earthhouge 2020-08-15
算法改变人生 2020-07-28
troysps 2020-07-19
Broadview 2020-07-19
chenfei0 2020-07-18
风吹夏天 2020-07-07
yangjingdong00 2020-07-05
数据与算法之美 2020-07-05
shawsun 2020-07-04
数据与算法之美 2020-07-04
要知道时间复杂度只是描述一个增长趋势,复杂度为O的排序算法执行时间不一定比复杂度为O长,因为在计算O时省略了系数、常数、低阶。实际上,在对小规模数据进行排序时,n2的值实际比 knlogn+c还要小。
Evankaka 2020-07-04
田有朋 2020-06-28