
算法导论
Felaim
Hey, you're not a nobody. You're a somebody.
展开
-
插入排序的代码实现
最近有时间会开始看算法导论,一点一点的把算法导论中的一些常见算法都实现一下,也算是扩充一下LZ的知识储备和代码储备,这样,无论什么时候要什么算法,LZ能很快找到,深有感慨,“纸上得来终觉浅,绝知此事要躬行”。理论到位了,代码也要到位。#include <iostream>using namespace std;//LZ这里添加了一个模板类template <class T>int getArr原创 2017-07-30 16:06:26 · 706 阅读 · 0 评论 -
归并排序的代码实现(加上算法运算时间)
第二个排序算法啦,主要就是按照书上伪代码进行C++的实现,这里LZ加了一小段计时程序,虽然这个排序事例比较简单,但是,如果这个排序函数在一个大型程序中需要调用成千上万次,那么一毫秒也会相当重要。在算法中或者在实际应用中时间复杂度和空间复杂度是通常项目实施中会遇到的两大难题,所以应该从刚开始编程开始就要把一些时间的损耗考虑进来,养成良好的习惯,对今后会有很大的帮助。#include <iostream原创 2017-07-30 19:09:16 · 884 阅读 · 0 评论 -
heapsort(堆排序)的代码实现
LZ还是在Qt上进行编译的。#include <QCoreApplication>#include <algorithm>#include <functional>#include <vector>#include <iostream>using namespace std;template<typename Type>class Heap{public: Heap(cons原创 2017-08-08 09:41:20 · 558 阅读 · 0 评论 -
常用集合运算符号
最近看论文碰到不少之前从未接触过的符号,因为主要是针对的集合操作,所以这里贴出下常见(有些对LZ来说并不常见的一些集合运算符)★ 符号名称:和集 [&] ◆ 符号解释:两个或两个以上的集合的所有元素组成一个新的集合,称为和集 ◆ 使用示例: 双目运算符 (1,2,3)&=1 2 3 1 3 4★ 符号名称:并集 [+] ◆ 符号解释:两个或两个以上集合并在一起并去除其中重复元素的集合,称为原创 2017-08-02 07:29:13 · 31851 阅读 · 9 评论 -
一篇关于PCA的深度好文
PCA(Principal Component Analysis)是一种常用的数据分析方法。PCA通过线性变换将原始数据变换为一组各维度线性无关的表示,可用于提取数据的主要特征分量,常用于高维数据的降维。网上关于PCA的文章有很多,但是大多数只描述了PCA的分析过程,而没有讲述其中的原理。这篇文章的目的是介绍PCA的基本数学原理,帮助读者了解PCA的工作机制是什么。当然我并不打算把文章写成纯数学文章转载 2017-08-02 15:51:24 · 714 阅读 · 0 评论 -
Agglomerative Hierarchical Clustering(AHC)
层次聚类算法层次聚类算法通过计算两类数据点间的相似性,对所有数据点中最为相似的两个数据点进行组合,并反复迭代这一过程。简单的说层次聚类的合并算法是通过计算每一个类别的数据点与所有数据点之间的距离来确定它们之间的相似性,距离越小,相似度越高。并将距离最近的两个数据点或类别进行组合,生成聚类树。假设有N个待聚类的样本,对于层次聚类来说,基本步骤就是:1)(初始化)把每个样本归为一类,计算每两个类之间的距原创 2017-08-04 10:44:39 · 8125 阅读 · 0 评论 -
Fibonacci(斐波那契数列)的实现
理论什么的就不介绍了,这里主要是从算法定义上实现的,当然还要另外几种类似的方法,和黄金分割点有关的,可以减少程序复杂度,或者进行矩阵运算,就请感兴趣的小伙伴自行理解吧!#include <iostream>using namespace std;int main(){ int n; cout << "please choose a number of the ith Finon原创 2017-08-04 20:09:20 · 1572 阅读 · 0 评论 -
最大子数组的代码实现(非暴力方法)
(时间复杂度为Θ(nlgn)\Theta(nlgn))的C++方法实现:LZ是用Qt进行编译的,所以就加上了Qt的头文件,如果不需要的话,可以直接删除,最后返回return 0;就可以了。 采用递归,也就是函数内部调用自己的时候要加上c++11的特性。#include <QCoreApplication>#include <iostream>#include <cmath>using nam原创 2017-08-05 09:10:52 · 488 阅读 · 0 评论 -
随机快速排序的代码实现
如果仅仅实现快速排序是不能排除输入的影响的,如果在最坏的情况下,快速排序的时间复杂度是Θ(n2)\Theta(n^2),如果是面试官出类似这一类排序的问题,例如要求时间复杂度为Θ(nlgn)\Theta(nlgn),那么回答快排并不是正确答案!#include <QCoreApplication>#include <iostream>#include <cstdlib>#include <ct原创 2017-08-05 21:24:53 · 601 阅读 · 0 评论