给定一个数字序列,求其中最长增序列。
假设 A[i] 表示以第i个元素结尾的最长增序的长度,那么F[i+1]需要依次和前面的F[0...i]进行比较,
F[i+1]=max{1, F[i]+1} 且A[i+1]>A[i]
此算法为n^2
优化算法: 根据F的值进行分类,对于一个F值k, 记录下所有F[i]中值为k的最小A[i]在数组D中.
假设已经求得最长增序的长度为m,那么对于新的输入A[t], 在数组D[1..m]中查找最大的比A[t]小的元素D[j], 那么更新D[j+1].
因为数组D是非降的,因而可以使用二分查找,使得算法复杂度降到nlogn的量级。