设计算法,时间复杂度为O(n**2),实现单调递增子序列。
//最长递增子序列
public class Longest {
public static void lis(float[] L){
int n = L.length;
int[] f = new int[n];//用于存放f(i)值;
f[0]=1;//以第a1为末元素的最长递增子序列长度为1;
for(int i = 1;i<n;i++)//循环n-1次
{
f[i]=1;//f[i]的最小值为1;
for(int j=0;j<i;j++)//循环i 次
{
if(L[j]<L[i]&&f[j]>f[i]-1)
f[i]=f[j]+1;//更新f[i]的值。
}
}
System.out.println("最大子序列长度为:"+f[n-1]);
}
public static void main(String[] arg) {
float [] a= {1,3,65,9,98,198,100};
lis(a);
}
}
很明显,两层for循环,时间复杂度为O(n**2)。