自己动手实现了几个经典排序算法,有兴趣的朋友可以看一下
python吧
全部回复
仅看楼主
level 11
a65123731
楼主
都挺基础的...
2018年04月18日 07点04分
1
level 11
a65123731
楼主
1. 冒泡排序
2018年04月18日 07点04分
2
level 11
a65123731
楼主
我的缩进呢...
2018年04月18日 07点04分
4
level 11
a65123731
楼主
ok
这应该是最基础的排序算法了
时间复杂度O(n^2),但逻辑简单
2018年04月18日 07点04分
6
asd7474166
for 后面跟下划线可以吗
2018年04月20日 02点04分
a65123731
@asd7474166
可以,代表你不用这个变量,只需要循环
2018年04月20日 17点04分
a65123731
@asd7474166
一开始我写的是i,然后pycharm给我标灰了
2018年04月20日 17点04分
asd7474166
学习了学习了,还有这功能
2018年04月22日 13点04分
level 11
a65123731
楼主
2.插入排序
2018年04月18日 07点04分
7
level 11
a65123731
楼主
3.选择排序
这几个都没啥说的
2018年04月18日 07点04分
8
level 11
a65123731
楼主
4.快速排序
这个就有点意思了
实现原理是从数组中随机抽取一个数,然后把所有比这个数小的放入一个新数组,比这个数大的放入另一个新数组,再对这两个新数组进行快速排序,直到所有数组都只剩下唯一一个元素(我把与这个数相等的也放在了一个新数组中,不过没有影响)
最坏时间复杂度还是O(n^2),不过正常情况下都是O(n logn)
2018年04月18日 07点04分
9
饼蛙✨
快速排序是真的快,但是空间复杂度太大了。。。
2020年02月24日 04点02分
a65123731
@饼蛙✨
有不需要额外空间的实现方法吧
2020年02月24日 22点02分
饼蛙✨
@a65123731
话说随机取数和固定取首位比,哪个会好一点?
2020年02月25日 00点02分
a65123731
@饼蛙✨
看原数据吧,如果原数据就是差不多排好序的,取首位就不太行了
2020年02月25日 10点02分
level 11
a65123731
楼主
排序1万个随机数的实际运行时间
2018年04月18日 07点04分
10
level 11
a65123731
楼主
5.归并排序
这也是一种非常常见的排序算法,甚至python内建list.sort()用的算法也是由这种算法发展而来
一般情况下比快速排序慢2-3倍,但优点是稳定,最好最坏情况下的时间复杂度都是O(n logn)
2018年04月18日 07点04分
11
level 11
a65123731
楼主
ok,今天收工,明天来看看有人看没,有的话继续更新堆排序、桶排序和基数排序
2018年04月18日 07点04分
12
level 2
天生王者oio
有
2018年04月19日 16点04分
13
level 8
小温侯_L
谢谢分享!!!
2018年04月21日 02点04分
14
level 11
a65123731
楼主
补充:希尔排序
2018年04月21日 07点04分
15
level 11
a65123731
楼主
6.堆排序
2018年04月21日 07点04分
16
level 11
a65123731
楼主
这里需要先了解一种数据结构:堆(heap) 一般有最大堆(大顶堆)和最小堆(小顶堆),因为我这个排序是要从小到大,所以用了最小堆。
最小堆实际上就是一颗遵守 “子节点一定不小于父节点” 的完全二叉树
先给出最小堆的代码
2018年04月21日 07点04分
17
1
2
尾页