2020年12月5日
01 时间复杂度
怎样来衡量算法的好坏?
衡量算法的好坏有很多标准,其中最重要的两大标准是算法的时间复杂度和空间复杂度。
时间复杂度和空间复杂度究竟是什么呢?首先,让我们来想象一个场景。
某一天,小灰和大黄实现同一个需求。一天后,小灰和大黄交付了各自的代码,两人的代码实现的功能差不多。
大黄的代码运行一次要花100ms,占用内存5MB。
小灰的代码运行一次要花100s,占用内存500MB。
在上述场景中,小灰虽然也按照老板的要求实现了功能,但他的代码存在两个很严重的问题。
- 运行时间长
- 占用空间大
由此可见,运行时间的长短和占用内存空间的大小,是衡量程序好坏的重要因素。
可是,如果代码都还没有运行,我怎么能预知代码运行所花的时间呢?
由于受运行环境和输入规模的影响,代码的绝对执行时间是无法预估的。但我们却可以预估代码的基本操作执行次数。
1.1) 基本操作执行次数
关于代码的基本操作执行次数,下面用生活中的4个场景来进行说明。
eg-(1a)------------------
场景1:给小灰1个长度为10cm的面包,小灰每3分钟吃掉1cm,那么吃掉整个面包需要多久?