2013-04-08 92 views
1

我正在尋找一種算法來排序數組,但不是通過移動值。相反,我想刪除儘可能少的值,並最終得到一個排序列表。基本上我想找到最長的升序子陣列。刪除元素來排序數組

舉例說明:

1 4 5 6 7 2 3 8 

應該成爲(2項刪除)

1 4 5 6 7 8 

而不是(5項刪除)

1 2 3 

我可以看到我是如何能在這樣做天真的方式,即通過遞歸檢查每個元素的「刪除」和「不刪除」樹。我只是想知道是否有一個更快/更有效的方式來做到這一點。這種問題是否有一個通用的前往算法?

+1

爲什麼不檢查,如果每個隨後元素是比以前的元件大(和刪除它,如果它不)? – ASGM 2013-04-08 10:29:52

+2

@ASGM:由於該「貪婪」算法沒有給出_longest_遞增子數組。考慮:'9 1 2 3 4 5 6 7 8''。 – Thomas 2013-04-08 10:31:52

+0

啊,好點@Thomas! – ASGM 2013-04-08 10:33:01

回答