【问题标题】:Algorithm that gets the largest sorted sub array from an array从数组中获取最大排序子数组的算法
【发布时间】:2012-11-08 14:06:30
【问题描述】:
我正在尝试在 C 中做某事,我需要一种算法来返回另一个数组中包含的最大维度排序数组。因此,例如,如果我有以下数组:
A[5] = {5, 2, 3, 1, 4}
它应该返回:
2, 3, 4
我想不出任何有效的实现。有什么想法吗?谢谢你。 :)
【问题讨论】:
标签:
c
arrays
algorithm
sorted
【解决方案2】:
来自最长递增子序列的维基百科页面:
L = 0
for i = 1, 2, ... n:
binary search for the largest positive j ≤ L
such that X[M[j]] < X[i] (or set j = 0 if no such value exists)
P[i] = M[j]
if j == L or X[i] < X[M[j+1]]:
M[j+1] = i
L = max(L, j+1)
这不是 C,但应该很容易用 C 编写代码。