Question 1: The following algorithm takes an unsorted array of integer numbers as input and sorts it in descending order, by repeatedly doing the following: first, it searches in the whole array for the greatest element. it then puts this element to the beginning of the array. • then, it searches the whole array excluding the first element for the greatest value and puts it to the second position. Implement the algorithm according to two different strategies: A By using the method shiftRight(int] A, int i, int ): if the maximum element is found in position j and needs to be put into position i, then (1) shift A to the right, starting from position i, while remembering the element in position į that will be overridden; (i) copy the remembered element to position i B. By using the method swap(int] A, int i, int j): if the maximum element is found in position i and needs to be put into position j, then use swap to exchange the element in position i with the element in position j.

Programming Logic & Design Comprehensive
9th Edition
ISBN:9781337669405
Author:FARRELL
Publisher:FARRELL
Chapter6: Arrays
Section: Chapter Questions
Problem 17RQ
icon
Related questions
Question

the qusetion on the picture 

Question 1:
The following algorithm takes an unsorted array of integer numbers as input and sorts it in
descending order, by repeatedly doing the following:
first, it searches in the whole array for the greatest element.
it then puts this element to the beginning of the array.
then, it searches the whole array excluding the first element for the greatest value and puts
it to the second position.
Implement the algorithm according to two diffrent strategies:
A. By using the method shiftRight(int[] A, int i, int j): if the maximum element is
found in position j and needs to be put into position i, then (i) shift A to the right,
starting from position i, while remembering the element in position j that will be
overridden; (i) copy the remembered element to position i.
B. By using the method swap(int[] A, int i, int j): if the maximum element is found in
position i and needs to be put into position j, then use swap to exchange the element
in position i with the element in position j.
Question 2:
Find out which of the two algorithms is faster. Is there an array size for which the running times
crosse over? (A size N would be such a cross-over point if for inputs of size less than N, the running
times of one algorithm are better, while for inputs of size greater than N, the running times of the
other algorithm are better.)
To perform your measurements, write a test class that
1. creates random arrays of size n = 10, 100, 1000, etc., and
2. for each array created, sorts it using the two implementations of the algorithm and
measures the running times.
to measure the running time use the Java method System.nanoTime() in the
following way:
long startTime = System.nanoTime();
. the code being measured .
long estimatedTime = System.nanoTime()-startTime;
Transcribed Image Text:Question 1: The following algorithm takes an unsorted array of integer numbers as input and sorts it in descending order, by repeatedly doing the following: first, it searches in the whole array for the greatest element. it then puts this element to the beginning of the array. then, it searches the whole array excluding the first element for the greatest value and puts it to the second position. Implement the algorithm according to two diffrent strategies: A. By using the method shiftRight(int[] A, int i, int j): if the maximum element is found in position j and needs to be put into position i, then (i) shift A to the right, starting from position i, while remembering the element in position j that will be overridden; (i) copy the remembered element to position i. B. By using the method swap(int[] A, int i, int j): if the maximum element is found in position i and needs to be put into position j, then use swap to exchange the element in position i with the element in position j. Question 2: Find out which of the two algorithms is faster. Is there an array size for which the running times crosse over? (A size N would be such a cross-over point if for inputs of size less than N, the running times of one algorithm are better, while for inputs of size greater than N, the running times of the other algorithm are better.) To perform your measurements, write a test class that 1. creates random arrays of size n = 10, 100, 1000, etc., and 2. for each array created, sorts it using the two implementations of the algorithm and measures the running times. to measure the running time use the Java method System.nanoTime() in the following way: long startTime = System.nanoTime(); . the code being measured . long estimatedTime = System.nanoTime()-startTime;
Expert Solution
trending now

Trending now

This is a popular solution!

steps

Step by step

Solved in 2 steps with 1 images

Blurred answer
Similar questions
  • SEE MORE QUESTIONS
Recommended textbooks for you
Programming Logic & Design Comprehensive
Programming Logic & Design Comprehensive
Computer Science
ISBN:
9781337669405
Author:
FARRELL
Publisher:
Cengage
C++ Programming: From Problem Analysis to Program…
C++ Programming: From Problem Analysis to Program…
Computer Science
ISBN:
9781337102087
Author:
D. S. Malik
Publisher:
Cengage Learning