
Algorithm
Yanbin_Q
真没什么要交待的,保持沉默
展开
-
向量间距离/相似度及用 Python 进行计算
计算距离的目的也是为了确定两个向量的相似度,这里的向量可以是纯数学的数组,或者是一系列带有某些可量化特征值的物件。写作本文的原由是需要用 Numpy 计算两个实际对象的相似度,实现代码非常简单,因此更不能满足于此,借此机会多多了解下向量之间距离和相似度的概念,还回顾下一些相关的数学知识。本文主要关注到欧氏距离和余弦相似度这两个数值的求解上。计算两个向量的相似度有许多的方法,如。原创 2022-10-11 00:00:52 · 1574 阅读 · 0 评论 -
归并排序算法解析
对于基本的排序算法,前面介绍了冒泡,选择,插入和希尔(增强版本的插入), 还有快速排序,现在还剩下最后一种基本的排序算法,那就是归并排序。归并排序像快速排序一样采用递归算法对列表进行分而治之,每次平均一分为二,分到只有一个元素为止。如果列表为空或只有一个元素时,那么从定义上来说它就是有序的; 当然归并排序的拆分最终不会有空列表的情况。拆分成一个个元素后再往回归并,归并是指将两个较小的有序列表归并为一个有序列表的过程。比如说两个单元素列表归并为两个元素的有序列表,两个双元素的列表归并为四个元素的有充列表...原创 2020-05-22 01:03:15 · 276 阅读 · 0 评论 -
希尔(Shell) 排序 - 增强版插入排序算法
前面讲过的几种排序多是以排序逻辑来命名的,例如冒泡,选择和插入排序,以及其他如归并排序,当然还有觉得自己足够牛 X 快速排序命名。而本文要学习的排序算法叫做希尔排序是以其设计者 Donlad Shell 命令的排序算法,该算法在 1959 年公布,能以作者来命名的算法应该是很不错的,令设计者引以为傲的。最初写出冒泡和选择排序的就没以作者来命名,可能不好意说,更可能是公共思维。 那么什么是希尔排序...原创 2020-05-05 09:00:55 · 198 阅读 · 0 评论 -
插入排序算法解析
前面说过最原始的复杂度为 O(n2) 的冒泡和选择排序,也跳跃到了复杂度为 O(n log n) 的快速排序,现在又再看一个复杂度同样为 O(n2) 的插入排序。从排序名称结合代码我们理解了为什么叫做冒泡或是选择,快速排序自认高名,那么何以这又谓之插入排序呢?是怎么插入,从左边往右边插,还是从右边往左边插,这得搞清它的排序原理: 它在列表较低的一端维护一个有序的子列表(从最左端一个元素开始),...原创 2020-05-05 09:00:19 · 236 阅读 · 0 评论 -
真正有些水准的排序算法 - 快速排序
冒泡和选择排序的简单粗暴也许在某些人眼里都不能称作算法,现在要进入一种更优雅的排序算法,快速排序。它使用分而治之(Divide and Conquer, D&G) 的策略,要应用到递归调用。快速排序敢说自己快速,也确实比选择排序快很多很多。冒泡和选择排序,尤其是选择排序是非常自然的排序算法,而快速排序就不是一般人会随意想出来的。 快速排序的演绎需要用递归来思考循环的问题,然而我之前总是在...原创 2020-04-20 03:24:20 · 198 阅读 · 0 评论 -
两种最基本的排序算法: 冒泡和选择
因 COVID-19 漫延各自居家,也更有闲时,便拣起一本关于算法的书籍来研究。本不是科班出身,算法方面自然是自己的薄弱环节。平时用各种 SDK,只大概听说了些算法,仅能就自己如何选择哪种实现而作为参考。 如今阅读的是一本入门的书籍,名为 《算法图解》,英文版书名是 《Grokking Algorithms》。 该书图文并茂,十分适合初学者,关于排序最基本莫过于冒泡与选择排序。该书并未提及冒泡,...原创 2020-04-16 01:53:34 · 213 阅读 · 0 评论