数据结构与算法
nathan_deep
Keep Learning, Keep Fighting
展开
-
算法导论:4 快排及随机化算法
1 快速排序1.1 快速排序原理快速排序算法采用的分治算法,因此对一个子数组进行快速排序的三个步骤为:(1)分解:数组被划分为两个(可能为空)子数组]和,给定一个枢轴,使得中的每个元素小于等于,中的每个元素大于等于,下标是在划分过程中计算得出的。(2)解决:通过递归调用快速排序,对子数组和进行排序。(3)合并:因为两个子数组是就地排序,不需要合并操作,整个数组排序完成。快速排序伪...原创 2019-10-26 16:00:23 · 993 阅读 · 0 评论 -
算法导论:3 分治法
1 分治法算法思想:将一个问题划分为若干个子问题。 递归的解决每一个子问题。 将子问题的解合并成为整个大问题的解。2 归并排序算法思想:将一个数组分为两个子数组。 递归的对每一个子数组进行排序。 合并两个有序子数组。时间复杂度:3 二分查找在有序数组中查找数X。算法思想:把数X与数组中间元素比较,得到X所在的子数组。 递归的在这个子数组...原创 2019-10-26 11:56:15 · 239 阅读 · 0 评论 -
编辑距离(Edit Distance)
编辑距离(Minimum Edit Distance,MED),由俄罗斯科学家 Vladimir Levenshtein 在1965年提出,也因此而得名 Levenshtein Distance。Levenshtein Distance 是用来度量两个序列相似程度的指标。通俗地来讲,编辑距离指的是在两个单词之间,由其中一个单词转换为另一个单词所需要的最少单字符编辑操作次数。单字符编辑操作...原创 2019-10-25 14:34:38 · 583 阅读 · 0 评论 -
算法导论:2 渐进符号、递归及解法
1 渐进符号1.1符号存在常数与,对所有的,满足。的复杂度最多与一个数量级,即小于等于。例:宏出现在公式中的集合符号(如)表示集合中的某一个函数,而不是集合整体。例1:直观理解:表示了一个误差界限,即主要是由构成的,但也有一些的低阶项实际含义:存在一个函数,使得例2:直观理解:“=”应该理解成“是”,而不是“等于”。等号左边隐含任意量词,等号右边隐含...原创 2019-10-19 16:23:48 · 661 阅读 · 0 评论 -
算法导论:1算法分析--python实现
1 插入排序(Insert Sort)1.1 插入排序原理最坏时间:输入逆序。 比较次数:(n+2)(n-1)/2移动次数:(n+4)(n-1)/2平均时间:输入规模为n时,所有可能输入的期望时间。换一种说法,每种输入的运行时间,乘以那种输入出现的概率,是一种加权平均。如何知道某种输入出现的概率?通过一个有关输入的统计分布的假设。常见的假设就是...原创 2019-10-15 17:53:33 · 306 阅读 · 0 评论