
排序算法
shuiyuejihua
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
python 冒泡排序
Python冒泡排序 从前往后冒泡 def bubble_sort(L): for i in range(1,len(L)): # 外层循环控制内层循环次数 # 冒泡排序,第一次内层循环n-1次 # 最后一次循环i=len(L)-1,此时j=0,循环后排序完成 flag = 0 for j in range...原创 2018-08-28 10:23:56 · 379 阅读 · 0 评论 -
Python 快速排序
python 快速排序 快速排序就是选取一个数,然后数组里比它大的数都放后面,比它小的数放前面;然后再递归排序前面、后面。平均时间复杂度:O(nlogn)O(nlogn)O(nlogn),最坏时间复杂度:O(n2)O(n2)O(n^2),每次划分都是1和n-1这种,最坏。 不稳定排序 def quick_sort(L): if len(L)<2: return ...原创 2018-08-31 10:07:41 · 230 阅读 · 0 评论 -
Python 选择排序
Python 选择排序 每次选择最小,然后和第一个交换,第二个交换,循环次数n-1,n-2,…1,n(n-1)/2,平均复杂度O(n2)O(n2)O(n^2),最坏复杂度O(n2)O(n2)O(n^2) 每次进行交换,不稳定,比如将相同的第一个数交换到末尾,那就和中间与其相同的数的顺序改变 def select_sort(L): for i in range(len(L)-1): ...原创 2018-08-29 09:53:53 · 200 阅读 · 0 评论 -
Python 归并排序
Python 归并排序 不断的分成2组,递归后,合并2个分组 稳定排序,时间复杂度都是O(nlogn)O(nlogn)O(nlogn),空间复杂度O(n)O(n)O(n) def merge_sort(L): if len(L)<2: return L mid = len(L)//2 left = merge_sort(L[:mid]) ...原创 2018-09-01 10:26:19 · 220 阅读 · 0 评论 -
Python 插入排序
python 插入排序 把第一个数固定,然后将其它数插入,小的放前面。备份这个后续插入的数,然后将这个数和前面的数作比较,比前面的数小,就将前面的数后移。这样相当于前面的数就挪出一个空,如果再往前没有比它小的了,就把开始备份好的数填进去。 插入排序,稳定,平均和复杂都是O(n2)O(n2)O(n^2) def insert_sort(L): for i in range(1, len...原创 2018-08-30 10:04:05 · 175 阅读 · 0 评论 -
Python 堆排序
Python 堆排序 叶子节点数:n0=n2+1n0=n2+1n_0 = n_2 +1,下标表示度 平均深度h:N−−√N\sqrt{N},N表示节点个数 完全二叉树:1到k-1层,都是满的二叉树,第k层,叶节点集中在左边 i从0开始, 子节点找父节点: int( (i-1) / 2 ) 或(区别在于i=0,上面为0,下面取值为-1;一般都行,不会父节点去找父节点) (i-1)//2 ...原创 2018-09-03 11:59:18 · 201 阅读 · 0 评论