add matrix

This commit is contained in:
nonstriater
2015-12-09 13:01:26 +08:00
parent 260f3d7993
commit b4f43c6368
4 changed files with 69 additions and 18 deletions
+16 -16
View File
@@ -2,19 +2,19 @@
### 数学是基础
微积分
概率论和统计学
线性代数(矩阵,向量)
数值数学(数值分析,线性规划,凸优化理论,常见数值优化算法)
实分析和泛函的基础
* 微积分
* 概率论和统计学
* 线性代数(矩阵,向量)
* 数值数学(数值分析,线性规划,凸优化理论,常见数值优化算法)
* 实分析和泛函的基础
### 机器学习
从大量数据中找到规律和知识,然后用规律和知识做决策。
机器学习偏向数学问题推导,数据挖掘就是抽特征
不要沉迷于数学公式推导,理解如何运用数据
从大量数据中找到规律和知识,然后用规律和知识做决策
机器学习偏向数学问题推导,数据挖掘就是抽特征
不要沉迷于数学公式推导,理解如何运用数据
分类器
@@ -37,13 +37,13 @@
基本不会去实现这些基础算法,都有现成的开源工具
概率图模型(Probabilistic graphical model)
两个核心的机器学习模型:Latent Dirichlet Allocation(LDA) Probabilistic Matrix Factorization(PMF)
统计计算(Statistical computing)
深度学习(Deep learning)
优化(optimization)
PAC学习理论(PAC Learning)
非参数贝叶斯统计(Non-parametric Bayesian statistics)
* 概率图模型(Probabilistic graphical model)
* 两个核心的机器学习模型:Latent Dirichlet Allocation(LDA) Probabilistic Matrix Factorization(PMF)
* 统计计算(Statistical computing)
* 深度学习(Deep learning)
* 优化(optimization)
* PAC学习理论(PAC Learning)
* 非参数贝叶斯统计(Non-parametric Bayesian statistics)
参考链接:http://www.zhihu.com/question/21714701
@@ -64,7 +64,7 @@ http://julyedu.com/course/getDetail?course_id=34#discard julyedu 课程大纲
### 数据挖掘
在知乎的描述中。`数据挖掘`是指从大量的数据中自动搜索隐藏于其中的有着特殊关系性的信息和知识的过程。
`数据挖掘`是指从大量的数据中自动搜索隐藏于其中的有着特殊关系性的信息和知识的过程。(from 知乎的描述)
+4
View File
@@ -60,6 +60,10 @@ SVM
学好python
coursera公开课
Andrew Ng
http://julyedu.com/course/getDetail?course_id=34#discard julyedu 课程大纲
+1 -2
View File
@@ -282,7 +282,6 @@ trie树的增加和删除都比较麻烦,但索引本身就是写少读多,
[知乎这里](http://www.zhihu.com/question/27168319)有个问题:`10万个串找给定的串是否存在`, 对trie和hash两种方案给出了讨论。
[DATrie](https://github.com/kmike/datrie) 是使用python实现的双数组trie树, 双数组可以减少内存的使用量 。有关 double-array trie,可以参考[这篇论文](http://linux.thai.net/~thep/datrie/datrie.html)
@@ -299,7 +298,7 @@ trie树的增加和删除都比较麻烦,但索引本身就是写少读多,
### 数据库索引
数据库索引一般使用B树(B+树,RB树)实现。
数据库索引一般使用B树(B+树,R树)实现。
+48
View File
@@ -48,6 +48,54 @@
#### 从小到大输出矩阵的值
思路1:采用归并进行排序然后进行顺序打印
思路2:用n个指针指向每一行的第一个数,比较n个指针的数,打印最小的,然后指针后移,若无下一位,则赋值为null,直至所有数都对印完毕
```
void printArry(int *a,int rows,int columns)
{
if(a==null)
return;
int *arr=new int[rows*(columns+1)];//添加看门狗值,INT_MAX
for(int i=0;i<rows;i++)
for(int j=0;j<columns+1;j++)
{
if(j==columns)
arr[i*(columns+1)+j]=INT_MAX;
else
arr[i*(columns+1)+j]=a[i*columns+j];
}
int* pArr1=new int[rows];//共存有这么多行指针
for(int i=0;i<rows;i++)
pArr1[i]=i*(columns+1);
while(1)
{
int min=arr[pArr1[0]];
int mini=0;
for(int i=0;i<rows;i++)
{//第i个数组最小
int index=pArr1[i];
if(min>arr[index])
{
min=arr[index];
mini=i;
}
}
if(min==INT_MAX)
break;//表示都达到了看门处,则跳出循环。
cout<<min<<" ";
pArr1[mini]++;//指针前移动
}
}
```
算法复杂度时O(mn);m是行数,n是列数;对原矩阵,增加一列,用于看门;利用类似归并排序中的整合过程,此处是整合m个有序数列,最后得到有序输出。
n支队伍比赛,分别编号为0,1,2。。。。n-1,已知它们之间的实力对比关系,
存储在一个二维数组w[n][n]中,w[i][j] 的值代表编号为i,j的队伍中更强的一支。