排序算法
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 · 341 阅读 · 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 · 205 阅读 · 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 · 171 阅读 · 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 · 181 阅读 · 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 · 147 阅读 · 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 · 178 阅读 · 0 评论