Academic Integrity: tutoring, explanations, and feedback — we don’t complete graded work or submit on a student’s behalf.

import java.io.*; import java.util.*; /** * StackSort is a program that will use

ID: 3910269 • Letter: I

Question

import java.io.*;

import java.util.*;

/**

* StackSort is a program that will use two stacks to sort an array of

integer values.

*

* @author Charles Hoot

* @version 4.0

*/

public class StackSort {

public static void main(String args[]) {

int data[] = null;

int result[] = null;

Scanner input;

input = new Scanner(System.in);

System.out.println("This program sorts an array of integer

values.");

// Create an empty array of integers

data = createArray(0, 1, 1);

System.out.println("Original array is: " +

representationOfArray(data));

result = doStackSort(data);

System.out.println("Sorted array is: " +

representationOfArray(result));

System.out.println();

// Create an array with one integer

data = createArray(1, 0, 9);

System.out.println("Original array is: " +

representationOfArray(data));

result = doStackSort(data);

System.out.println("Sorted array is: " +

representationOfArray(result));

System.out.println();

// Create an array with two integers

data = createArray(2, 0, 9);

System.out.println("Original array is: " +

representationOfArray(data));

result = doStackSort(data);

System.out.println("Sorted array is: " +

representationOfArray(result));

System.out.println();

// Create an array with 10 integers

data = createArray(10, 0, 9999);

System.out.println("Original array is: " +

representationOfArray(data));

result = doStackSort(data);

System.out.println("Sorted array is: " +

representationOfArray(result));

System.out.println();

// Create an array with 20 integers

data = createArray(20, 0, 9);

System.out.println("Original array is: " +

representationOfArray(data));

result = doStackSort(data);

System.out.println("Sorted array is: " +

representationOfArray(result));

System.out.println();

System.out.println("Please enter the number of values to sort");

int size = getInt(" It should be an integer value greater than

or equal to 1.");

// Create an array of the given size

data = createArray(size, 0, 99);

System.out.println("Original array is: " +

representationOfArray(data));

result = doStackSort(data);

System.out.println("Sorted array is: " +

representationOfArray(result));

System.out.println();

}

/**

* Use two stacks to sort the data in an array

*

* @param data An array of integer values to be sorted.

* @return An array of sorted integers.

*/

private static int[] doStackSort(int data[]) {

int result[] = new int[data.length];

// ADD CODE HERE TO SORT THE ARRAY USING TWO STACKS

return result;

}

/**

* Load an array with data values

*

* @param size The number of data values to generate and place in the

array.

* @param min The minimum value to generate.

* @param max The maximum value to generate.

* @return An array of randomly generated integers.

*/

private static int[] createArray(int size, int min, int max) {

Random generator = new Random();

// If we get a negative size, just make the size 1

if (size < 0) {

size = 1;

}

// We need max > min for the random number generator to be happy

if (max <= min) {

max = min + 1;

}

int[] data = new int[size];

for (int i = 0; i < size; i++) {

data[i] = min + generator.nextInt(max - min);

}

return data;

}

/**

* Create a string with the data values from an array

*

* @param data An array of integer values.

* @return A string representation of the array.

*/

private static String representationOfArray(int data[]) {

String result = new String("< ");

for (int i = 0; i < data.length; i++) {

result += data[i] + " ";

}

result += ">";

return result;

}

/**

* Get an integer value

*

* @return An integer.

*/

private static int getInt(String rangePrompt) {

Scanner input;

int result = 10; //default value is 10

try {

input = new Scanner(System.in);

System.out.println(rangePrompt);

result = input.nextInt();

} catch (NumberFormatException e) {

System.out.println("Could not convert input to an integer");

System.out.println(e.getMessage());

System.out.println("Will use 10 as the default value");

} catch (Exception e) {

System.out.println("There was an error with System.in");

System.out.println(e.getMessage());

System.out.println("Will use 10 as the default value");

}

return result;

}

}

Explanation / Answer


Given below is the completed code for the question.
To indent code in eclipse , select code by pressing ctrl+a and then indent using ctrl+i
Please do rate the answer if it was helpful. Thank you


import java.io.*;
import java.util.*;

/**
*
* StackSort is a program that will use two stacks to sort an array of
*
* integer values.
*
*
*
* @author Charles Hoot
*
* @version 4.0
*
*/

public class StackSort {

public static void main(String args[]) {

int data[] = null;

int result[] = null;

Scanner input;

input = new Scanner(System.in);

System.out.println("This program sorts an array of integer values.");

// Create an empty array of integers

data = createArray(0, 1, 1);

System.out.println("Original array is: " + representationOfArray(data));

result = doStackSort(data);

System.out.println("Sorted array is: " + representationOfArray(result));

System.out.println();

// Create an array with one integer

data = createArray(1, 0, 9);

System.out.println("Original array is: " + representationOfArray(data));

result = doStackSort(data);

System.out.println("Sorted array is: " + representationOfArray(result));

System.out.println();

// Create an array with two integers

data = createArray(2, 0, 9);

System.out.println("Original array is: " + representationOfArray(data));

result = doStackSort(data);

System.out.println("Sorted array is: " + representationOfArray(result));

System.out.println();

// Create an array with 10 integers

data = createArray(10, 0, 9999);

System.out.println("Original array is: " + representationOfArray(data));

result = doStackSort(data);

System.out.println("Sorted array is: " +representationOfArray(result));

System.out.println();

// Create an array with 20 integers

data = createArray(20, 0, 9);

System.out.println("Original array is: " + representationOfArray(data));

result = doStackSort(data);

System.out.println("Sorted array is: " + representationOfArray(result));

System.out.println();

System.out.println("Please enter the number of values to sort");

int size = getInt("It should be an integer value greater than or equal to 1.");

// Create an array of the given size

data = createArray(size, 0, 99);

System.out.println("Original array is: " + representationOfArray(data));

result = doStackSort(data);

System.out.println("Sorted array is: " + representationOfArray(result));

System.out.println();

}

/**
*
* Use two stacks to sort the data in an array
*
*
*
* @param data
* An array of integer values to be sorted.
*
* @return An array of sorted integers.
*
*/

private static int[] doStackSort(int data[]) {

int result[] = new int[data.length];

// ADD CODE HERE TO SORT THE ARRAY USING TWO STACKS
Stack<Integer> stack1 = new Stack<Integer>();
Stack<Integer> stack2 = new Stack<Integer>();

for(int i = 0; i < data.length; i++)
{
//if stack1 is not empty and as long as the current data element is smaller than top of stack1,
//pop all elements from stack1 and add to stack2
while(!stack1.isEmpty() && data[i] < stack1.peek())
{
stack2.push(stack1.pop());
}

stack1.push(data[i]); //push the current element onto stack1

//push all elements from stack2 into stack1
while(!stack2.isEmpty())
{
stack1.push(stack2.pop());
}
}


//now the elements in stack1 are all in ascending order... fill these into result array
for(int i = data.length-1; i >= 0; i--)
result[i] = stack1.pop();

return result;

}

/**
*
* Load an array with data values
*
*
*
* @param size
* The number of data values to generate and place in the
*
* array.
*
* @param min
* The minimum value to generate.
*
* @param max
* The maximum value to generate.
*
* @return An array of randomly generated integers.
*
*/

private static int[] createArray(int size, int min, int max) {

Random generator = new Random();

// If we get a negative size, just make the size 1

if (size < 0) {

size = 1;

}

// We need max > min for the random number generator to be happy

if (max <= min) {

max = min + 1;

}

int[] data = new int[size];

for (int i = 0; i < size; i++) {

data[i] = min + generator.nextInt(max - min);

}

return data;

}

/**
*
* Create a string with the data values from an array
*
*
*
* @param data
* An array of integer values.
*
* @return A string representation of the array.
*
*/

private static String representationOfArray(int data[]) {

String result = new String("< ");

for (int i = 0; i < data.length; i++) {

result += data[i] + " ";

}

result += ">";

return result;

}

/**
*
* Get an integer value
*
*
*
* @return An integer.
*
*/

private static int getInt(String rangePrompt) {

Scanner input;

int result = 10; // default value is 10

try {

input = new Scanner(System.in);

System.out.println(rangePrompt);

result = input.nextInt();

} catch (NumberFormatException e) {

System.out.println("Could not convert input to an integer");

System.out.println(e.getMessage());

System.out.println("Will use 10 as the default value");

} catch (Exception e) {

System.out.println("There was an error with System.in");

System.out.println(e.getMessage());

System.out.println("Will use 10 as the default value");

}

return result;

}

}

output
====
This program sorts an array of integer values.
Original array is: < >
Sorted array is: < >

Original array is: < 1 >
Sorted array is: < 1 >

Original array is: < 0 3 >
Sorted array is: < 0 3 >

Original array is: < 975 6437 6777 4913 8446 7581 6917 4527 1489 4835 >
Sorted array is: < 975 1489 4527 4835 4913 6437 6777 6917 7581 8446 >

Original array is: < 4 5 4 2 7 1 3 6 6 7 4 3 3 6 0 4 7 3 3 6 >
Sorted array is: < 0 1 2 3 3 3 3 3 4 4 4 4 5 6 6 6 6 7 7 7 >

Please enter the number of values to sort
It should be an integer value greater than or equal to 1.
5
Original array is: < 61 92 32 93 4 >
Sorted array is: < 4 32 61 92 93 >