Write a recursive method public static int pos(int[] a, int l,int r) that positions a[l] at its rank if the array a were sorted between l and r,and that returns this rank. That is, we assume that a is an unsorted array of int,l and r are int such that 0 <= l <= r < a.length, after this call : k = pos(a, l, r); acontains the same elements before and after this call, but it is such that a[k] >=a[i] for all i in [l, k-1] and a[k] < a[j] for all j in [k+1, r].For instance, consider this fragment: int[] a = {8,7,4,1,9,6,2,5,3,0};System.out.println(Arrays.toString(a));// [8, 7, 4, 1, 9, 6, 2, 5, 3, 0]pos(a, 2, 7); // a[2..7] = {4, 1, 9, 6, 2, 5}System.out.println(Arrays.toString(a));/* [8, 7, 1, 2, 4, 6, 5, 9, 3, 0] is possible because4 >= 2, 4 >= 1, 4 < 6, 4 < 5, 4 < 9.But It could also be [8, 7, 2, 1, 4, 6, 5, 9, 3, 0], or[8, 7, 2, 1, 4, 9, 5, 6, 3, 0] */
Write a recursive method public static int pos(int[] a, int l,
int r) that positions a[l] at its rank if the array a were sorted between l and r,
and that returns this rank. That is, we assume that a is an unsorted array of int,
l and r are int such that 0 <= l <= r < a.length, after this call : k = pos(a, l, r); a
contains the same elements before and after this call, but it is such that a[k] >=a[i] for all i in [l, k-1] and a[k] < a[j] for all j in [k+1, r].
For instance, consider this fragment:
int[] a = {8,7,4,1,9,6,2,5,3,0};
System.out.println(Arrays.toString(a));
// [8, 7, 4, 1, 9, 6, 2, 5, 3, 0]
pos(a, 2, 7); // a[2..7] = {4, 1, 9, 6, 2, 5}
System.out.println(Arrays.toString(a));
/* [8, 7, 1, 2, 4, 6, 5, 9, 3, 0] is possible because
4 >= 2, 4 >= 1, 4 < 6, 4 < 5, 4 < 9.
But It could also be [8, 7, 2, 1, 4, 6, 5, 9, 3, 0], or
[8, 7, 2, 1, 4, 9, 5, 6, 3, 0] */
Trending now
This is a popular solution!
Step by step
Solved in 3 steps with 1 images