DDSA Solutions

Sort in specific order

Advertisement

Intuition

Sort array where odd numbers come first (sorted descending) then even numbers (sorted ascending).

Algorithm

  1. 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?