Concept explainers
(Quicksort) The recursive sorting technique called quicksort uses the following basic
- Partitioning Step: Take the first element of the unsorted array and determine its final location in the sorted array (i.e., all values to the left of the element in the array are less than the element’s value, and all values to the right of the element in the array are greater than the element’s value—we show how to do this below). We now have one value in its proper location and two unsorted sub-arrays.
- Recursion Step: Perform the Partitioning Step on each unsorted sub-array.
Each tune Step 1 is performed on a sub-array, another element is placed in its final location of the sorted array, and two unsorted sub-arrays are created. When a sub-array consists of one element, that sub-array must be sorted; therefore, that element is in its final location.
The basic algorithm seems simple enough, but how do we determine the final position of the first element of each sub-array? As an example, consider the following set of values (the element in bold is the partitioning element—it will be placed in its final location in the sorted array):
37 2 6 4 89 8 10 12 68 45
Starting from the rightmost element of the array, compare each element with 37 until an element less than 37 is found. Then swap 37 and that element. The first clement less than 37 is 12, so 37 and 12 are swapped. The values now reside in the array as follows:
12 2 6 4 89 8 10 37 68 45
Element 12 is in italics to indicate that it was just swapped with 37.
Starting from the left of the array, but beginning with the element after 12, compare each element with 37 until an clement greater than 37 is found. Then swap 37 and that element. The first element greater than 37 is 89, so 37 and 89 are swapped. The values now reside in the array as follows:
12 2 6 4 10 8 37 89 68 45
.Starting from the right, but beginning with the element before 89, compare each element with 37 until an element less than 37 is found. Then swap 37 and that element. The first element less than 37 is 10, so 37 and 10 are swapped. The values now reside in the array as follows:
12 2 6 4 10 8 37 89 68 45
Starting from the left, but beginning with the element after 10, compare each element with 37 until an element greater than 37 is found. Then swap 37 and that element. There are no more elements greater than 37, so when we compare 37 with itself, we know that 37 has been placed in its final location of the sorted array.
Once the partition has been applied to the array, there are two unsorted sub-arrays. The subarray with values less than 37 contains 12, 2, 6, 4, 10 and 8. The sub-array with values greater than 3 ' contains 89, 68 and 45. The sort continues with both sub-arrays being partitioned in the same manner as the original array.
Based on the preceding discussion, write recursive function quicksort to sort a single-sub- scripted integer array. The function should receive as arguments an integer array, a starting subscript and an ending subscript. Function partition should be called by quicksort to perform the partitioning step.
Want to see the full answer?
Check out a sample textbook solutionChapter 20 Solutions
C++ How to Program (10th Edition)
- 4. CodeW X For func X C Solved b Answer x+ https://codeworkou... ... [+) CodeWorkout X271: Recursion Programming Exercises: Minimum of array For function recursiveMin, write the missing part of the recursive call. This function should return the minimum element in an array of integers. You should assume that recursiveMin is initially called with startIndex = 0. Examples: recursiveMin({2, 4, 8}, 0) -> 2 Your Answer: 1 public int recursiveMin(int numbers[], int startIndex) { numbers.length - 1) { if (startIndex 2. return numbers[startIndex]; } else { return Math. min(numbers[startIndex], >); 5. { 1:11 AM 50°F Clear 12/4/2021arrow_forward[MATLAB] Code the algorithm that calculates the convolution of two discrete-time signals (x[n] and y[n]) received from the user in MATLAB. The built-in convolution function will not be used. Example: myconv(x,n, y,m) : n and m are the numbers of elements in the array.Example: x[n] = [1 2 3] , y[n] = [1 2 3] Result= [1 4 10 12 9] : Underlined and bold values are n=0 point.arrow_forwardsolition in C++arrow_forward
- Sort an array RECURSIVELY using the selection sort algorithm. (USE PYTHON make sure the code has the methods invoked through test statements.)arrow_forwardTwo dimension array in C:Create a two dimension array of integers that is 5 rows x 10 columns.Populate each element in the first 2 rows (using for loops) with the value 5.Populate each element of the last three rows (using for loops) with the value 7.Write code (using for loops) to sum all the elements of the first three columns and output thesum to the screen.arrow_forward4 Quick Sort Given the following array: {5,1,2,7,9,3,7,8,4}, illustrate the operation of PAR- TITION (which is defined on page 4 of the slides of lecture 4) on the given array. Show what the array looks like in each step. ALWAYS use the first element as the pivot.arrow_forward
- c++arrow_forwardProgram by using "C language " my student number is : 1910206534arrow_forwardDESIGN YOUR OWN SETTING Task: Devise your own setting for storing and searching the data in an array of non-negative integers redundantly. You may just describe the setting without having to give an explicit algorithm to explain the process by which data is stored. You should explain how hardware failures can be detected in your method. Once you have described the setting, include the following to your answer: Write a pseudocode function to describe an algorithm where the stored data can be searched for a value key: if the data is found, its location in the original array should be returned; -1 should be returned if the data is not found; -2 should be returned if there is a data storage error Include a short commentary explaining why your pseudocode works Describe the worst-case and best-case inputs to your search algorithm Derive the worst-case and best-case running times for the search algorithm Derive the Theta notation for the worst-case and best-case running timesarrow_forward
- Topic: Data Structures: Arrays, Strings and Structs. Write a program that will read in N integers from keyboard input into an array. The size of the array N will be entered on the keyboard. The program will tabulate the output as shown below: the first column should show the list of distinct array elements sorted in ascending order, while the second column should show the number of occurrences of each element.Sample input: 9 , 15, 7, 9, 3, 7, 3, 3, 7, 6, 3, 20 Expected Output: N count3 46 17 39 215 120 1 (w/pseudocodes)arrow_forward6 - Merge sorted arrays Program a method merge_sorted(a,b) that when given two sorted arrays a and b, returns a new sorted array c that has the elements from array a and array b. For example when given = [1,3,5,6,10] a b = [1,4,6,8] %3D the resulting array should be: C = = [1,1,3,4,5,6,6,8,10] This method should not call a sorting method. Instead, the resulting array should be produced by "zipping" the two input arrays together: we repeatedly select the least element that we did not consider before from a and b and include this in c. For example: a = [1,3,5,6,10] b = [1,4,6,8] C = [1,1,3, ...] the arrows (^) point to the lowest element we did not consider before. Of these, element 4 from b is less than element 5 from a. For this reason, we select 4 as the next element and advance the arrow ^ for b to point to 6.arrow_forwardCodeWorkout X263: Recursion Programming Exercise: Largest Write the missing base case for function largest.Function largest should find the largest number in array numbers.When largest is first called, index will equal numbers.length-1. Examples: largest({2, 4, 8}, 2) -> 8 Your Answer: 1 public int largest(int[] numbers, int index) { if > return numbers[0]; return Math.max(numbers[index], largest(numbers, index-1)); 5} 4arrow_forward
- C++ for Engineers and ScientistsComputer ScienceISBN:9781133187844Author:Bronson, Gary J.Publisher:Course Technology PtrC++ Programming: From Problem Analysis to Program...Computer ScienceISBN:9781337102087Author:D. S. MalikPublisher:Cengage Learning