数据结构与算法9-排序1

北城余情 提交于 2020-03-17 22:39:49

在这里插入图片描述
本篇文章讲解冒泡、插入、选择排序。

1.衡量排序算法执行效率(不太用的到)

时间复杂度
时间复杂度的系数、常数、低阶
比较次数和交换(或移动)次数

2.一些前提概念

在这里插入图片描述
在这里插入图片描述
上述使用稳定排序算法的例子蛮实用的。

3.冒泡排序

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
平均时间复杂度呢?—— 使用有序度、逆序度
在这里插入图片描述
满有序度 = n*(n-1)/2
逆序度 = 满有序度 - 有序度
在这里插入图片描述
最坏情况的逆序度是 n*(n-1)/2,所以算平均是 n*(n-1)/4,所以平均时间复杂度为O(n^2)。

4.插入排序(就是打扑克牌,所以很常用)

在这里插入图片描述
在这里插入图片描述
上述关于逆序度的trick,了解一下即可。
在这里插入图片描述
在这里插入图片描述

5.选择排序(就是选苹果)

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

6.为什么插入排序更受欢迎

在这里插入图片描述
在这里插入图片描述

7.小结

在这里插入图片描述

8.扩展

在这里插入图片描述
在这里插入图片描述
冒泡排序动图:https://pic1.zhimg.com/v2-1543c0b97237bb55063e033959706ca0_b.webp

插入排序动图:https://pic2.zhimg.com/v2-f87ad7d8ad54379dd81f02fcf9b91f49_b.webp

选择排序动图:https://pic1.zhimg.com/v2-f20b8898585b3ca03843d93ce2c35a68_b.webp

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!