做了这么多年的程序员,是不是一直靠着自己的聪明伶俐在编码,数据结构和算法是前辈们的心血和经验总结,不可错过。
数据结构是利用其存储结构和逻辑结构来有效地组织数据,比如线性的表、栈、队列,非线性的树、图等,而算法是描述运算的过程,良好的算法是建立在有效的数据结构之上的。
评价算法的指标
评价一个算法的好坏,除了他正确性指标外,就是所消耗的时间和空间
。
为了方便计算所消耗的时间,需要先作2个假设
:
算法与计算机的软硬件无关(硬件好理解,软件比如编程语言、执行器、编译器等);
代码中的每个语句所消耗的时间都一样,记作一个时间单位;
举个例子
for (int i = 0; i < n; i++) { //①
for (int j = 0; j < n; j++) { //②
c[i][j] = 0; //③
for (int k = 0; k < n; k++) { //④
c[i][j] = a[i][k] + b[k][j] + c[i][j]; //⑤
}
}
}
计算它所消耗时间的过程如下
语句①需要循环到i=n时才会完结,所以它耗费n+1个时间单位;
语句②同语句①,自己的的循环中耗费n+1个时间单位,但它在①的n次循环体内,所以消耗n*(n+1)个时间单位;
语句③在语句①②循环体内,它们分别循环n次,所以语句③消耗n*n个时间单位;
语句④同③,但它本身执行n+1,所以语句④消耗n*n*(n+1)个时间单位;
语句⑤在语句①②④循环体内,它消耗n*n*n个时间单位;
所以总体消耗的时间为:n+1 + n*(n+1) + n*n+n*n*(n+1)+n*n*n=2n3+3n2+2n+1;