Sort in specific order
JavaView on GFG
Problem Overview
Sort array where odd numbers come first (sorted descending) then even numbers (sorted ascending).
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?