http://en.wikipedia.org/wiki/Longest_increasing_subsequence#Efficient_algorithms说最有效的解决方案是在O(n log n)中,因此如果我对序列进行排序,它将是O(n log n)然后如果我遍历排序的序列,则拒绝每个没有增加的项目,它将是O(n),因此算法将在O(n log n + n)中,即~O(n log n)......
答案 0 :(得分:2)
对序列进行排序会改变原始序列中项目的顺序,并且您的方法将始终返回与原始序列长度相同的最短序列。 Se Mehrdad的评论。
从您的链接:
二进制Van der Corput序列
0,8,4,12,2,10,6,14,1,9,5,13,3,11,7,15 ......
增长最快的子序列是
0,2,6,9,13,15。
现在让我们应用你的算法:
将原始序列分类为:
0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15
这里增长最快的是:
0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15
答案 1 :(得分:0)
如果你对它进行排序,那么就会破坏输入,并且无法解决真正的问题。
答案 2 :(得分:-1)
“如果我对序列进行排序” 为什么这样?排序时所有子序列会发生什么? ; - )