在线算法与离线算法

今天偶然发现了一个概念,在线算法和离线算法,以前没有听说过。

简单而言,在线算法可以处理数据流,而离线算法不可以,离线算法必须要在算法开始前就准备好所有数据。

举个例子,插入排序就是个在线算法,哪怕给定的列表已经排完序,我也可以在最后面再添加一个数据,继续重新排序。

插入排序

另外一个在线算法的例子,就是水塘抽样算法,之前有写过这个有趣的算法:蓄水池抽样算法


而离线算法,就要求在算法的一开始就准备好所有数据,如选择排序。
选择排序

https://zh.wikipedia.org/zh-cn/在线算法