Sort in specific order
JavaView on GFG
Advertisement
Intuition
Sort array where odd numbers come first (sorted descending) then even numbers (sorted ascending).
Algorithm
- 1Separate odd and even. Sort odds descending, evens ascending. Concatenate odds + evens.
Common Pitfalls
- •Partition then sort each group. O(n log n). Specific ordering depends on problem variant.
Sort in specific order.java
Java
// Approach: Partition into two groups (odd/even, positive/negative, etc.) then arrange per specification.
// Time: O(n log n) Space: O(n)
import java.util.*;
class Solution {
public void sortIt(int[] arr) {
int n = arr.length;
List<Integer> odd = new ArrayList<>();
List<Integer> even = new ArrayList<>();
for (int i = 0; i < n; i++) {
if (arr[i] % 2 == 0)
even.add(arr[i]);
else
odd.add(arr[i]);
}
Collections.sort(odd);
Collections.reverse(odd);
Collections.sort(even);
int i = 0;
int j = 0;
while (i < odd.size()) {
arr[j] = odd.get(i);
i++;
j++;
}
// j++;
int k = 0;
while (k < even.size()) {
arr[j] = even.get(k);
k++;
j++;
}
}
}
Advertisement
Was this solution helpful?