学习笔记
排序算法
目录
排序分为两类,比较类排序和非比较类排序,比较类排序通过比较来决定元素间的相对次序,其时间复杂度不能突破O(nlogn);非比较类排序可以突破基于比较排序的时间下界,缺点就是一般只能用于整型相关的数据类型,需要辅助的额外空间。
很多人学习python,不知道从何学起。
很多人学习python,掌握了基本语法过后,不知道在哪里寻找案例上手。
很多已经做案例的人,却不知道如何去学习更加高深的知识。
那么针对这三类人,我给大家提供一个好的学习平台,免费领取视频教程,电子书籍,以及课程的源代码!
QQ群:101677771
要求能够手写时间复杂度位O(nlogn)的排序算法: 快速排序、归并排序、堆排序
1.冒泡排序
思想:相邻的两个数字进行比较,大的向下沉,最后一个元素是最大的。列表右边先有序。
时间复杂度$O(n^2)$,原地排序,稳定的
def bubble_sort(li:list): for i in range(len(li)-1): for j in range(i + 1, len(li)): if li[i] > li[j]: li[i], li[j] = li[j], li[i]
2.选择排序
思想