Beruflich Dokumente
Kultur Dokumente
import java.util.Arrays;
1
המערך הממוין הארוך ביותר- חיפוש של תת//
// array contains integer different numbers,assumption: arr.length>2
// calculation of the length of largest increment subsequence
public static int[] LIS(int [] arr){
int size = arr.length;
int mat [][] = new int[size][size];
int d[] = new int[size];
mat [0][0] = arr[0];
d[0] = arr[0];
int end = 0;
for (int i=1; i<size; i++){
int index = binarySearchNear(d, end, arr[i]);
mat[index][index] = arr[i];
for(int j=0; j<index; j++) mat[index][j]=mat[index-1][j];
for(int j=0; j<index; j++) d[j]=mat[index-1][j];
d[index] = arr[i];
if (index>end) end++;
}
int ans[] = new int[end+1];
for(int j=0; j<=end; j++) ans[j]=mat[end][j];
return ans;
}
תוכנית בדיקה//
public static void main(String[] args) {
int size = 10;
int [] arr = MyLibrary.randomIntArrayOfDiffNumbers(size);
//Arrays.sort(arr);
MyLibrary.printIntegerArray(arr);
//int index = binarySearchNear(arr, arr.length-1,3);
//System.out.println("index = "+index);
int m = LISLength(arr);
System.out.println("m = "+m);
int [] d = LIS(arr);
MyLibrary.printIntegerArray(d);
}
}