算法笔记
算法笔记
季泠
你是我虚耗时间的毒药
也是我盲目生活的目标
展开
-
【排序算法】几种经典排序算法的python实现
冒泡排序法 def bubbleSort(ls): for j in range(len(ls)-1,0,-1): for i in range(j): if ls[i]>ls[i+1]: ls[i],ls[i+1]=ls[i+1],ls[i] 对比的时间复杂度是O(n2),交换的复杂度也是O(n2) 冒泡排序...原创 2020-04-24 12:28:25 · 364 阅读 · 0 评论 -
字符串匹配算法:KMP
字符串匹配算法:KMP Knuth–Morris–Pratt(KMP)算法是一种改进的字符串匹配算法,它的核心是利用匹配失败后的信息,尽量减少模式串与主串的匹配次数以达到快速匹配的目的。它的时间复杂度是 O(m+n)。 一般来说,暴力匹配时: 我们在进行每一轮匹配时,总是会重复对 A 进行比较。也就是说,对于 S 中的每个字符,我们都需要从 T 第一个位置重新开始比较,并且 S 前面的 A 越多,浪费的时间也就越多。假设 S 的长度为 m,T 的长度为 n,理论上讲,最坏情况下迭代 m - n + 1 轮原创 2020-06-04 13:52:47 · 387 阅读 · 0 评论 -
【经典算法:排序】快速排序
快排介绍 快速排序(Quicksort)是对冒泡排序的一种改进。1 快速排序由C. A. R. Hoare在1960年提出。它的基本思想是:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。2 分别从数组的两端扫描数组,设两个指示标志(low指向起...原创 2020-03-20 13:39:28 · 241 阅读 · 0 评论 -
二叉树 | 列表转树 | 树遍历:前序,中序,后序,层次 | N叉树
# Definition for a binary tree node. # class TreeNode: # def __init__(self, x): # self.val = x # self.left = None # self.right = None 1、将列表型二叉树还原成树结构 ls=[5,4,8,11,None,13...原创 2020-02-05 23:50:16 · 230 阅读 · 0 评论 -
算法分析 笔记
算法是问题解决的通用的分步的指令的聚合。这是一种能解决任何问题实例的方法,比如给定一个特定的输入,算法能产生期望的结果。 从另一方面看,一个程序是用某种编程语言编码后的算法。同一算法通过不同的程序员采用不同的编程语言能产生很多程序。 所以,要如何判断一段程序的好坏呢?首先来说,我们必须确保程序的可读性,这样才能更好的修改与维护程序。除此,算法分析应该是从计算资源消耗的角度来判断,判断方法有两个指标...原创 2020-02-05 16:15:02 · 209 阅读 · 0 评论