在数据结构与算法中,我们来讲讲求和这个经典问题,不对之处还请各位不吝赐教。
求: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对比,可以说是天差地别的!

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

相关文章:

  • 2021-06-22
  • 2021-11-06
  • 2021-06-10
  • 2021-11-30
  • 2021-10-20
  • 2021-07-13
  • 2021-11-13
  • 2021-10-27
猜你喜欢
  • 2021-11-09
  • 2021-08-27
  • 2021-12-18
  • 2021-03-26
  • 2022-01-04
  • 2021-11-16
相关资源
相似解决方案