精通算法
⑴ 大学即将学习计算机,想提前学习计算机的算法,哪本书比较好,适合从入门学习算法到精通的
别用书了,直接上网就可以学。
这是我算法课老师的导师做的算法课笔记,你如果有毅力看懂英语,把里面topic全看完,作业尽量做完,你会编程算法大神的。这可是伊利诺伊斯理工(一个常青藤联盟学校)的算法课堂笔记。主要看algorithm notes。
网页链接
⑵ 怎么样才算是精通一门编程语言是完全掌握语法,还是精通算法
如果基础很差的话就不要从头看了,看看历年的软考关于算法那些最常考,重点看那些,看懂,记住过程,即使有个别地方不对,到时候也不会丢太多的分,因为,数据结构不是一时半会就能明白的,这个每个半年一年的是没法完全明白的,更别说掌握了。
如果基础很好的话,就复习单链表。栈,队列。树,图太难,大概看看,再看看选择和冒泡排序法。这个是基础。看主要看思路,考试时按思路自己写,要想记住是不太可能的。
⑶ 算法从入门到精通一般要学习多久
HTML5入门到精通可以分为3个阶段:了解HTML5、熟练掌握HTML5、精通HTML5;
HTML5此处指的是HTML、CSS、JavaScript以及HTML5和CSS3(新增的)
首先了解HTML5
需要去了解HTML5是什么,HTML5能够做什么以及HTML5行业的状况,然后在已了解的基础上发掘自己是否喜欢HTML5这个职业,才去决定自己是否学习HTML5。
大概时间:2~3天
其次熟练掌握HTML5
先学习HTML与CSS
在一些机构培训当中,全日制,每天学8个小时,也需要学习1~1.5个月,而且学不完整不扎实
自学的情况下,折算相应时间即可,另外需要注意,自学时选择合适的书籍进行学习,会相对高效一些。
选择好的学习资源(主要看知识逻辑、表达方式等),才能够更好的去吸收知识,学习时间成本也会低一些。
资源推荐:
HTML+CSS方面的可以去看《HTML5布局之路》
JavaScript方面的可以去看《JavaScript权威指南》、《JavaScript高级程序设计》
此后是JavaScript,原生JS、AJAX、jQuery,差不多也得需要2~3个月(每天8小时)
至于说精通~~~对HTML5技术领域有深刻的研究与认知,能够根据自身的开发经验与项目经验构建自己的前端框架或者工具。最起码3~5年甚至更长,其前提还是不断深入研究,而非“工具式”的使用。
⑷ 怎么才能学好DSP呢,还有怎么样才能精通那些常用算法
DSP本身不难学啊,只是高级点的单片机罢了。建议楼主买块DSP开发板,对着示例程序自己捣鼓几天,编几个小程序就会了,更深入了解的在实际应用中才能达到。
所谓的算法就是是把对象模型或者功能用程序代码来实现,要精通算法首先要精通理论并了解实际应用,所谓难点就在这里。接下来就是编程能力的问题了。个人认为提高理论水平和编程能力最重要,只是为了用DSP而学DSP意义不大,还不如学学单片机来的快。
⑸ 温正的精通matlab智能算法这本书怎么样
《精通MATLAB智能算法》是2015年由清华大学出版社出版的图书,作者是温正。本书以最新推出的MATLAB 2014a软件为基础,详细介绍了各种智能算法的原理及其MATLAB在智能算法中的应用,是一本MATLAB智能算法设计的综合性参考书。
⑹ 嵌入式软件工程师有必要精通算法,参加各种编程大赛吗
你参加ICPC没有必要,行业不同,那是计算机软件工程师参与的。个人感觉嵌入式工程师所涉及的算法和计算机软件工程师所设计的算法有一小小差别。计算机软件工程师要实现的是运行在通用计算机平台上的软件,算法研究偏向于尽量降低系统的开销,完全不需要考虑硬件设备。
⑺ 学习游戏编程必需很精通算法吗
这个是必须的,不是说游戏编程精通算法,是所有的编程都需要精通算法,和数据结构那些一样,因为编程本身就是一种算法的演变。
⑻ 请教各位精通FFT算法和VC++的大虾
把你的程序发过来看下,时序FFT算法还是挺简单的啊。
我这有两个,一个是在网上搜的,一个是我自己写的。
复数这个类自己写一个就可以了。
// FFT_t.cpp : 定义控制台应用程序的入口点。
//
#include "stdafx.h"
#include "complex.h"
#include "cmath"
#include "iostream"
#include "stdio.h"
#include "fstream"
using namespace std;
#include "stdio.h"
#define NUM 128
int changeadd(int k,int m)//倒序方法一,直接算出其值
{
//m是二进制数的位数
//这个地主要注意的是当m很大时,K1可能会超出范围
int k1=0;
for(int i=0;i<m;i++)
{
if(k&(int)pow(2.0,i))
k1+=pow(2.0,m-i-1);
}
return k1;
}
void FFT(complex *in,complex * out,int M)
{
ofstream file("fft.dat");
int N=pow(2.0,M);
out[0]=in[0];
out[N-1]=in[N-1];
complex t;
for(int i=1;i<N-1;i++)
{
if(i<changeadd(i,M))
{
t=in[changeadd(i,M)];
out[changeadd(i,M)]=in[i];
out[i]=t;
}
}
file<<"in"<<endl;
for(int i=0;i<N;i++)
file<<in[i];
//cout<<"out"<<endl;
//for(int i=0;i<N;i++)
// cout<<out[i];
for(int L=1;L<=M;L++)//L第几层蝶形,
{
int B=pow(2.0,L-1);//B同一个蝶形的两个点间的距离
for(int J=0;J<=B-1;J++)
{
int P=pow(2.0,M-L)*J;
complex temp(cos(2*PI*P/N),-sin(2*PI*P/N));
file<<temp;
for(int K=J;K<=N-1;K+=pow(2.0,L))
{
//if(L==1&&J==0&&K==2){__asm int 3}
out[K]=out[K]+out[K+B]*temp;
out[K+B]=out[K]-out[K+B]*temp*2;
}
}
//观察蝶形的具体样子
//file<<"第"<<L<<"层"<<endl;
//for(int i=0;i<N;i++)
//{
// file<<out[i];
//}
//file<<endl;
}
file.close();
}
//////////////////////////////////////////////////////
////在网上找到的一种算法
void _FFT(complex Input[],int Length,int isign)
{
//isign代表是正还是逆变换 -1表示正变换,1表示逆变换
ofstream _file("_fft.dat");
int l,i,m,mr=0;
complex t;
float tm,pisign=isign*PI;
for(m=1;m<Length;m++)//倒序
{
l=Length>>1;
while(mr+l>=Length) l>>=1;
mr=mr%l+l;
if(mr>m)
{
t=Input[m];
Input[m]=Input[mr];
Input[mr]=t;
}
}
_file<<"in"<<endl;
for(int i=0;i<Length;i++)
_file<<Input[i];
/////蝶形计算
l=1;
while(l<Length)
{
for(m=0;m<l;m++)
{
tm=pisign/l*m;
_file<<complex(cos(tm),sin(tm));
for(i=m;i<Length;i+=l<<1)
{
//if(l==1&&m==0&&i==2){__asm int 3}
t=Input[i+l]*complex(cos(tm),sin(tm));
Input[i+l]=Input[i]-t;
Input[i]+=t;
}
}
l<<=1;
// _file<<"第"<<l<<"层"<<endl;
// for(int i=0;i<Length;i++)
// {
//
// _file<<Input[i];
// }
// _file<<endl;
}
if(isign==1) for(l=0;l<Length;l++) Input[l]/=Length;
_file.close();
}
//////////////////////////////////////
int _tmain(int argc, _TCHAR* argv[])
{
complex in[NUM];
complex _in[NUM];
double t;
int x=log(NUM*1.0)/log(2.0);
for(int i=0;i<NUM;i++)
{
t=sin(0.01*2*PI*i)+sin(0.02*2*PI*i)+sin(0.4*2*PI*i);
_in[i]=in[i]=complex(t,0);
}
FFT(in,in,x);
_FFT(_in,NUM,-1);
//for(int i=0;i<NUM;i++)
// cout<<in[i];
//int x;
//while(1)
//{
// cin>>x;
// if(x==0)break;
// //changeadd;
// printf("%x\n",x);
//printf("%x\n",changeadd(2,7));
//}
return 0;
}
里边的调试代码我也没有删除,能帮助你理解
⑼ 如何才算精通算法和数据结构
精通是你自己认为自己比大部分人都强了,你要知道别人在做什么,你都会了,你还有自己的经验和独到之处,就算是精通了
看看微软的面试题吧,问个简单问题,如何检测一个链表有环?
给你一个算法,你能否看出它是否足够优化,是否知道它的时间空间复杂度,给你一个实际问题,比如存储的价格和计算的价格,你能否给出最省钱的方案?
常用的算法,你是否能直接就写出来,比如让你排序你能不能直接就写出4-5种方案,说出每种的复杂度?