算法 数组中的最长递增子序列
int getMaxList(int *a,int size)
{
int max=1;
int lis[size];// let all list initial value =1
int maxV[size];// 递增序列中最大数的最小值
maxV[1]=a[0];// 表示长度为1的递增序列中的最大数的最小值为a[0],如有12,13则a[2]=2
for(int i=1;i<size;i++)
{
int k=bsearch(maxV,res,a[i]);// 找到a[i]比maxV中稍大的一个位置
lis[i]=lis[k]+1;
if(lis[i]>max)
{
max=lis[i];
maxV[lis[i]]=a[i];
}else
if(a[i]>maxV[k]&&a[i]<maxV[k+1])// 更新最小值 //例如1,2,3,4和1,2,3,4,6,a[i]=5时,更新为1,2,3,4,5
{
maxV[k+1]=a[i];
}
}
return max;
}