以前学习了算法,但没怎么深入理解。
偶然得知,身边的人都成为了算法仙人,原因是仙凡之间有交流障碍。
汗颜。
痛定思痛,想体验算法之美,所有以下是本人的算法入门----时空复杂度的计算。
而后,笔者会尽量用简单的词语,让读者理解。
首先,我们先看一道题,别担心,是一道简单的题。
题设如下:
写出一个算法,求下面序列之和: -1, 1, -1, 1, .......(-1)^n (ps:此处为-1的n次方)。
遇到这类问题,第一反应一般是无脑蛮力计算,请看算法1:
int sum = 0;
for(int i = 1; i < n; i++){
sum += (-1) ^ n;
}
的确,无脑的确能解决问题,但能不能再优雅一点?
好吧,我们再来看看算法2:
if(n % 2 == 0){
sum = 0;
}else{
sum = -1;
}
其实,每一对之和为零,我们只需要统计判断n的奇偶性,答案自然而解。
这有点类似高斯算法,解决1到100的和一样。
综上呢,可以看出,每一道题,都有不同的解决方案,有的蛮横,有的优雅。
蛮横和优雅之间,我选择.....你呢?
本博客例子,摘自《趣学算法》 陈小玉 编著。
若是读者喜欢,请支持正版。