JAVA数据结构与算法的学习——求和

在数据结构与算法中,我们来讲讲求和这个经典问题,不对之处还请各位不吝赐教。
求:1+2+3+…+100的和
想必大家都会想这个太简单的了吧,用一个for循环不就得了,的确是可以这样但是你有想过这样做的复杂度是多少吗?我们算法的精湛就是要复杂度越小越好,资源利用的越少越好
先上for循环的代码:

//求1+2+3+....+100的和
public class Main1 {

	public static void main(String[] args) {
		int n=100,sum=0;
		for(int i=1;i<=n;i++) {
			sum+=i;
		}
		System.out.println(sum);
	}
}

如果面试你是这么写的,你已经被PASS掉了,为什么呢?请接着往下看

对问题进行分析

你应该能找出其中的规律,也就是我们初高中的公式,所以我们应该这么写:

//求1+2+3+....+100的和
public class Main2 {

	public static void main(String[] args) {
		int n=100,sum=0;
		sum=(1+n)*n/2;
		System.out.println(sum);
	}

}

答案应该是这样,这两中算法的好坏应该用什么来衡量呢?
肯定是上面所提到的复杂度啦,不懂的小伙伴可以百度或者翻阅书籍,这是一个很重要的概念!
对比两种算法:

资源图:
X轴是内容,Y轴是资源,我们可以看出,n和1中资源使用的差别,可能这个例子还不太明显,但你可以发现n!和2的n次方与n,1对比,可以说是天差地别的!

由分析得,显然是第二种算法好,复杂度低,算法是特别重要的,因为在一些应用的场景,例如一些高并发,如果使用到的算法是很高复杂度的,那么服务器反应很慢或者很快就会宕机,所以一定要认识算法的重要性,掌握好算法。

猜你喜欢

转载自blog.csdn.net/weixin_42404323/article/details/86556885