简明解释算法中的大O符号

  今天听课老师没讲什么,但还是介绍了一些学长学姐们的学习工作创业经历啥的..或许见闻别人的人生和生活并不会给自己带来什么,但也算是一种阅历一种学习吧!我记不住他们任何人的名字,但我知道了他们学习做题的习惯和好方法,至少了解到世界上比我聪明还比我勤奋的人太多了,自己可不能这样就甩锅放弃。

  今天看了关于死亡的文章,总结下来一句话就是:如果你对死亡感到畏惧——那就说明你对生活还有期盼还有遗憾还有追求还没试过真正的体验生活。

  好了,开始记录今天我的学习:

   大O符号是一种算法复杂度的相对表示方式。

  

  • 相对(relative):你只能比较相同的事物。你不能把一个做算数乘法的算法和排序整数列表的算法进行比较。但是,比较2个算法所做的算术操作(一个做乘法,一个做加法)将会告诉你一些有意义的东西;
  • 表示(representation):大O(用它最简单的形式)把算法间的比较简化为了一个单一变量。这个变量的选择基于观察或假设。例如,排序算法之间的对比通常是基于比较操作(比较2个结点来决定这2个结点的相对顺序)。这里面就假设了比较操作的计算开销很大。但是,如果比较操作的计算开销不大,而交换操作的计算开销很大,又会怎么样呢?这就改变了先前的比较方式;
  • 复杂度(complexity):如果排序10,000个元素花费了我1秒,那么排序1百万个元素会花多少时间?在这个例子里,复杂度就是相对其他东西的度量结果。
  • 总结下来其实也就是大O符号在不同问题的表达还是不一样的,也就是对于计算机执行我算法的次数,便表示了这些时间概念。比如旅行家问题的阶乘算法、二分搜索、多项式时间之类的!只要算法简单还有执行力强,问题在强大的计算机面前还是可以解决的!主要从期望情况和最坏情况去考虑问题,让思路更严谨,目标更明确。

posted on 2016-05-11 00:26  kobeshegu  阅读(2950)  评论(0编辑  收藏  举报

导航