w3resource

Java: Arrange the elements of a given array of integers where all negative integers appear before all the positive integers

Java Array: Exercise-48 with Solution

Write a Java program to arrange the elements of an array of integers so that all negative integers appear before all positive integers.

Pictorial Presentation:

Java Array Exercises: Arrange the elements of a given array of integers where all negative integers appear before all the positive integers

Sample Solution:

Java Code:

// Import the necessary Java utility class for working with arrays.
import java.util.Arrays;

// Define the Main class.
public class Main {

    // The main method for executing the program.
    public static void main(String[] args) {
        // Define an array of integers.
        int[] nums = {-4, 8, 6, -5, 6, -2, 1, 2, 3, -11};
        
        // Print the original array.
        System.out.println("Original Array: " + Arrays.toString(nums)); 
        
        // Call the sort_nums method to modify the array.
        sort_nums(nums);
        
        // Print the modified array.
        System.out.println("New Array: " + Arrays.toString(nums)); 
    }
    
    // Method to sort the numbers in the array based on their signs.
    public static void sort_nums(int[] nums){
        int pos_num = 0;
        int neg_num = 0;
        int i, j;
        int max = Integer.MIN_VALUE;

        // Count the positive and negative numbers and find the maximum value.
        for(i = 0; i < nums.length; i++){
            if(nums[i] < 0) neg_num++;
            else pos_num++;
            if(nums[i] > max) max = nums[i];
        }
        max++;

        // If there are no negative or positive numbers, return.
        if(neg_num == 0 || pos_num == 0) return;

        i = 0;
        j = 1;
        
        // Reorder the array.
        while(true){
            while(i <= neg_num && nums[i] < 0) i++;
            while(j < nums.length && nums[j] >= 0) j++;
            
            if(i > neg_num || j >= nums.length) break;
            
            nums[i] += max * (i + 1);
            swap_nums(nums, i, j);
        }

        i = nums.length - 1;
        
        // Adjust the values to their original range.
        while(i >= neg_num){
            int div = nums[i] / max;
            
            if(div == 0) i--;
            else{
                nums[i] %= max;
                swap_nums(nums, i, neg_num + div - 2); 
            }
        }
    }
    
    // Method to swap elements in the array.
    private static void swap_nums(int[] nums, int i, int j){
        int t = nums[i];
        nums[i] = nums[j];
        nums[j] = t;
    }
}

Sample Output:

                                                                              
Original Array: [-4, 8, 6, -5, 6, -2, 1, 2, 3, -11]
New Array: [-4, -5, -2, -11, 6, 6, 1, 2, 8, 3]

Flowchart:

Flowchart: Arrange the elements of a given array of integers where all negative integers appear before all the positive integers

Java Code Editor:

Previous: Write a Java program to find the rotation count in a given rotated sorted array of integers.
Next: Write a Java program to arrange the elements of a given array of integers where all positive integers appear before all the negative integers.

What is the difficulty level of this exercise?

Test your Programming skills with w3resource's quiz.



Follow us on Facebook and Twitter for latest update.