Please note, this is a STATIC archive of website www.w3resource.com from 19 Jul 2022, cach3.com does not collect or store any user information, there is no "phishing" involved.
w3resource

Java Array Exercises: Find and print one continuous subarray to sort an entire array

Java Array: Exercise-72 with Solution

Write a Java program to find and print one continuous subarray (from a given array of integers) that if you only sort the said subarray in ascending order then the entire array will be sorted in ascending order.

Example:
Input :
nums1 = {1, 2, 3, 0, 4, 6}
nums2 = { 1, 3, 2, 7, 5, 6, 4, 8}
Output:
Continuous subarray:
1 2 3 0
Continuous subarray:
3 2 7 5 6 4

Sample Solution:

Java Code:

import java.util.Arrays;
public class solution {
public static int[] findUnsortedSubarray(int[] nums) {
			int[] result = new int[3];
            int n = nums.length;
            int start = -1;
            int end = -2;
            int min = nums[n - 1];
            int max = nums[0];
            for (int i = 1; i < n; i++) {
                max = Math.max(max, nums[i]);
                min = Math.min(min, nums[n - 1 - i]);
                if (nums[i] < max) {
                    end = i;
                }
                if (nums[n - 1 - i] > min) {
                    start = n - 1 - i;
                }
            }
           		result[0] = start;
		    result[1] = end;

			return result;
        }
    
  public static void main(String[] args)
  {
    int[] nums1 = {1, 2, 3, 0, 4, 6};
	System.out.printf("\nOriginal array: "+Arrays.toString(nums1));	

	int[] result1 = findUnsortedSubarray(nums1);
	System.out.printf("\nContinuous subarray:\n");
	for(int i=result1[0]; i<=result1[1]; i++){
        System.out.print(nums1[i] +" ");
        }
	
	int[] nums2 = { 1, 3, 2, 7, 5, 6, 4, 8};
	System.out.printf("\n\nOriginal array: "+Arrays.toString(nums2));	
    System.out.printf("\nContinuous subarray:\n"); 
	int[] result2 = findUnsortedSubarray(nums2);
	
	for(int i=result2[0]; i<=result2[1]; i++){
        System.out.print(nums2[i] +" ");
        }
   }  
}

Sample Output:

Original array: [1, 2, 3, 0, 4, 6]
Continuous subarray:
1 2 3 0 

Original array: [1, 3, 2, 7, 5, 6, 4, 8]
Continuous subarray:
3 2 7 5 6 4 

Flowchart:

Flowchart: Find and print one continuous subarray to sort an entire array.

Java Code Editor:

Improve this sample solution and post your code through Disqus

Previous: Write a Java program to form the largest number from a given list of non negative integers.
Next: Write a Java program to sort a given array of distinct integers where all its numbers are sorted except two numbers.

What is the difficulty level of this exercise?

Test your Programming skills with w3resource's quiz.



Java: Tips of the Day

How to sort an ArrayList?

Collections.sort(testList);
Collections.reverse(testList);

That will do what you want. Remember to import Collections though!

Ref: https://bit.ly/32urdSe