//最长上升子序列
public class LIS {
    public static int lisFun(int[]arr){
        int len = arr.length;
        int[]lis = new int[len];
        for(int i = 0 ; i < len; i++){
            lis[i] = 1;//初始化从i开始寻找的序列的第一个值=1(第一个肯定能进入序列)
            for(int j = 0; j < i; j++){
                if(arr[j] < arr[i] && (lis[j]+1) > lis[i])
                    lis[i] = lis[j]+1;
            }
        }
        int max = 0 ;
        for(int i = 0 ; i < lis.length; i++){
            if(lis[i] > max)
                max = lis[i];
        }
        return max;
    }
}
LIS最长上升子序列_java

这里附上分析图,数组arr对应存放序列值的lis