算法
文章平均质量分 54
卅千万
怕什么真理无穷,进一寸有一寸的欢喜。
展开
-
堆排序新解
简介 堆排序是一种不稳定的排序算法。 堆排序的时间复杂度为O(NlogN)。 堆排序有两种实现方式。基于递归函数的实现,其额外空间复杂度为O(logN);非递归实现的额外空间复杂度为O(1)。 这里讨论的是非递归的实现方式。堆分为大根堆和小根堆,是完全二叉树。 对于完全二叉树中的任意一个节点,若它存在左孩子和右孩子(右孩子如果缺失可以脑补),你都会发现如图一三角形区域所示的微金字塔结...原创 2018-09-11 17:28:12 · 125 阅读 · 0 评论 -
别说我不懂排序!几种常见排序算法(一)
part1 冒泡排序 冒泡排序的核心:一步一步交换相邻位置的数据! 代码示例 for 循环实现。 def bubble_sort1(arr): # 交换的细节 def swap(i,j): arr[i],arr[j]=arr[j],arr[i] n =len(arr) # 一步一步比较 for i in range(n): ...原创 2018-09-11 17:36:41 · 171 阅读 · 0 评论 -
别说我不懂排序!几种常见排序算法(二)
part4:选择排序 核心思想:可以将一个原始列表划分成有序和无序两部分,每次从无序部分挑选出最值加入有序部分的一侧,直到该列表完全有序。 代码示例 def selection_sort(arr): n = len(arr) for i in range(n-1): smallNdx =i for j in range(i+1,n): ...原创 2018-09-13 14:47:17 · 159 阅读 · 0 评论