十大经典排序算法动画,看我就够了!

点击上方“程序人生”,选择“置顶公众号”

第一时间关注程序猿(媛)身边的故事


640?wx_fmt=jpeg

图片源自:モブサイコ100

作者

程序员小吴

如需转载,请联系我们。


在前面的章节中详细的讲解分析了十大经典排序算法,本文将进行一个大总结。

Tip 为了演示更加清楚,本文中所有的动画都放慢了速度,因此GIF大小对比之前会有所增大,图片加载速度会变慢。

排序算法是《数据结构与算法》中最基本的算法之一。

排序算法可以分为内部排序外部排序

内部排序是数据记录在内存中进行排序。

而外部排序是因排序的数据很大,一次不能容纳全部的排序记录,在排序过程中需要访问外存。

常见的内部排序算法有:插入排序、希尔排序、选择排序、冒泡排序、归并排序、快速排序、堆排序、基数排序等。

用一张图概括:

640?wx_fmt=png

关于时间复杂度:

  1. 平方阶 (O(n2)) 排序 各类简单排序:直接插入、直接选择和冒泡排序。

  2. 线性对数阶 (O(nlog2n)) 排序 快速排序、堆排序和归并排序;

  3. O(n1+§)) 排序,§ 是介于 0 和 1 之间的常数。 希尔排序

  4. 线性阶 (O(n)) 排序 基数排序,此外还有桶、箱排序。

关于稳定性:

  1. 稳定的排序算法:冒泡排序、插入排序、归并排序和基数排序。

  2. 不是稳定的排序算法:选择排序、快速排序、希尔排序、堆排序。

 冒泡排序

640?wx_fmt=gif

 选择排序

640?wx_fmt=gif

 插入排序

640?wx_fmt=gif

希尔排序

640?wx_fmt=gif

 归并排序

640?wx_fmt=gif

 快速排序

640?wx_fmt=gif

堆排序

640?wx_fmt=gif

计数排序

640?wx_fmt=gif

桶排序

640?wx_fmt=gif

 基数排序

640?wx_fmt=gif


文章思路开源项目地址:https://github.com/hustcc/JS-Sorting-Algorithm,整理人 hustcc。


- The End -

「若你有原创文章想与大家分享,欢迎投稿。」

加编辑微信ID,备注#投稿#:

程序 丨 druidlost  


640?wx_fmt=jpeg


2018 中国大数据技术大会

BDTC 2018


BDTC 2018中国大数据技术大会携主题“大数据新应用”再度强势来袭。本次大会由华东师范大学副校长、教授周傲英,百度商业智能实验室主任熊辉,阿里巴巴副总裁李飞飞三位会议主席对大会内容把关,多位两院院士参与指导,由最了解行业痛点的一线从业者为同行打造。


扫描下方二维码或点击【阅读原文】快速购票。现在购票还有机会获得大数据图书一本(中国科学院院士梅宏主编的《大数据导论》或华中科技大学教授金海主编的《大数据处理》),数量有限!


640?wx_fmt=jpeg


推荐阅读:

640?wx_fmt=gif

print_r('点个赞吧');
var_dump('点个赞吧');
NSLog(@"点个赞吧!");
System.out.println("点个赞吧!");
console.log("点个赞吧!");
print("点个赞吧!");
printf("点个赞吧!\n");
cout << "点个赞吧!" << endl;
Console.WriteLine("点个赞吧!");
fmt.Println("点个赞吧!");
Response.Write("点个赞吧");
alert(’点个赞吧’)


猜你喜欢

转载自blog.csdn.net/csdnsevenn/article/details/84848750
今日推荐