算法
刷算法的过程中自己的一些经验总结
TommyLiuZ
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
008.排序算法——(二)选择排序——堆排序
008.排序算法——(二)选择排序——堆排序 1.算法思想 升序,建立大根堆 降序,建立小根堆 数据利用列表存储 步骤: 升序,建立大根堆 建立完成后,利用大根堆的结构,交换根结点和最下层最右侧的结点,最终形成升序序列 2.算法代码 # 堆调整函数 def heapify(arr, n, i): # 坐标关系 largest = i # 根节点 l = 2 * i + 1 # left = 2*i + 1 左叶子结点 r = 2 * i + 2原创 2021-04-16 16:40:28 · 270 阅读 · 0 评论 -
007.回溯算法
007.回溯算法 1. 算法框架 result = [] def backtrack(路径, 选择列表): if 满足结束条件: result.add(路径) return for 选择 in 选择列表: 做选择 backtrack(路径, 选择列表) 撤销选择 2.能够解决的问题 全排列问题 N皇后问题 ...原创 2021-03-29 09:03:31 · 107 阅读 · 0 评论 -
006.排序算法——(三)归并排序
004.排序算法——(一)交换排序——快速排序 介绍 归并排序(Merge sort)是建立在归并操作上的一种有效的排序算法 是分治思想的算法应用 自上而下的递归 自下而上的迭代 归并排序的性能不受输入数据的影响,都是 O(nlogn) 的时间复杂度 需要额外的内存空间 算法步骤 申请空间,使其大小为两个已经排序序列之和,该空间用来存放合并后的序列 设定两个指针,最初位置分别为两个已经排序序列的起始位置 比较两个指针所指向的元素,选择相对小的元素放入到合并空间,并移动指针到下一位置 重复步骤 3 直到原创 2021-03-18 10:22:09 · 214 阅读 · 0 评论 -
004.排序算法——(一)交换排序——快速排序
004.排序算法——(一)交换排序——快速排序 介绍 在平均状况下,排序 nnn 个项目要 O(nlogn)Ο(nlogn)O(nlogn) 次比较 在最坏状况下则需要O(n2)Ο(n^2)O(n2)次比较,但这种状况并不常见 快速排序通常明显比其他 Ο(nlogn) 算法更快,因为它的内部循环可以在大部分的架构上很有效率地被实现出来 快速排序使用分治法策略来把一个串行分为两个子串行 本质上来看,快速排序应该算是在冒泡排序基础上的递归分治法 快速排序的最坏运行情况是 O(n²),比如说顺序数列的快排。但它原创 2021-03-17 21:10:17 · 178 阅读 · 0 评论 -
005.排序算法——(二)选择排序——简单选择排序
004.排序算法——(二)选择排序 介绍 选择排序简单直观 无论什么数据进去都是 O(n²) 的时间复杂度 用到它的时候,数据规模越小越好 不占用额外的内存空间 算法步骤 首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置。 再从剩余未排序元素中继续寻找最小(大)元素,然后放到已排序序列的末尾。 重复第二步,直到所有元素均排序完毕 代码 从小到大排序 将这个背下来 def selectionSort(nums): length = len(nums) for i in r原创 2021-03-17 18:58:14 · 160 阅读 · 1 评论 -
003.排序算法——(一)交换排序——冒泡排序
003.排序算法——(一)冒泡排序 介绍 冒泡排序(Bubble Sort):简单直观的排序算法。 它重复地走访过要排序的数列,一次比较两个元素,如果它们的顺序错误就把它们交换过来。 走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。 这个算法的名字由来是因为越小的元素会经由交换慢慢"浮"到数列的顶端。 冒泡排序还有一种优化算法,就是立一个 flag,当在一趟序列遍历中元素没有发生交换,则证明该序列已经有序。但这种改进对于提升性能来说并没有什么太大作用。 算法步骤 比较相邻的元原创 2021-03-17 15:38:23 · 243 阅读 · 4 评论 -
002.动态规划问题
002.动态规划问题 1.解决的问题类型 最值问题 2.算法介绍 基本思想 将待求解的问题分解成若干子问题,先求解子问题,再结合这些子问题的解得到原问题的解,分解 得到的子问题往往不是互相独立的 保存已解决的子问题的答案,在需要时再找出以求得的答案,为了达到此目的,可以用一个表来记 录所有已解决的子问题的答案。 设计步骤 找出最优解的性质,并刻画其结构特征 递归地定义最优值 以自底向上的方式计算机最优值 根据计算最优值时得到的信息,构造最优解 步骤1~3是动态规划算法的基本步骤 基本要素 最优子结构原创 2021-03-15 22:07:33 · 129 阅读 · 0 评论 -
001.算法心得
001.算法心得 1. 数据结构 两种最基本的存储结构 顺序存储 链式存储 数据结构的基本操作:增删查改 数据结构的遍历 线性结构 迭代 非线性结构 迭代和递归 2.算法原创 2021-03-15 20:21:35 · 104 阅读 · 0 评论
分享