删除元素以排序数组

时间:2013-04-08 10:26:30

标签: algorithm sorting

我正在寻找一种算法来排序数组,但不是通过移动值。相反,我想删除尽可能少的值并最终得到一个排序列表。基本上我想找到最长的升序子阵列。

举例说明:

1 4 5 6 7 2 3 8

应该成为(2删除)

1 4 5 6 7 8

而不是(5删除)

1 2 3

我可以看到我如何以天真的方式做到这一点,即通过递归检查每个元素的'remove'和'dont remove'树。我只是想知道是否有更快/更有效的方法来做到这一点。对于这类问题,有一个共同的算法吗?

2 个答案:

答案 0 :(得分:8)

您正在寻找longest increasing subsequence问题。有一个algorithm可以在O(n log n)时间内解决它。

答案 1 :(得分:3)

网站上有一个O(NlogN)算法,它比递归算法快。

http://www.algorithmist.com/index.php/Longest_Increasing_Subsequence