(Quicksort) In the examples and exercises of Chapter 6 and this appendix, we discussed various sorting techniques. We now present the recursive sorting technique called Quicksort. The 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, and all values to the right of the element in the array are greater than the element). We now have one element in its proper location and two unsorted subarrays.
- Recursive Step: Perform Step a on each unsorted subarray.
Each time Step a is performed on a subarray, another element is placed in its final location of the sorted array, and two unsorted subarrays are created. When a subarray consists of one element, it 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 subarray? 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):
- 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 element less than 37 is 12, so 37 and are swapped. The new array is
- Element 12 is in italic 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 element 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 new array is
- 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 new array is
- 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 in the sorted array.
Once the partition has been applied to the array, there are two unsorted subarrays. The subarray with values less than 37 contains 12, 2, 6, 4, 10 and s. The subarray with values greater than 37 contains 89, 63 and 45. The sort continues by partitioning both subarrays in the same manner as the original array.
Write recursive function quicksort to sort a one-dimensional 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.
Trending nowThis is a popular solution!
Chapter D Solutions
C How To Program, Global Edition
Additional Engineering Textbook Solutions
Starting Out with C++ from Control Structures to Objects (8th Edition)
Starting Out with Java: Early Objects (6th Edition)
Starting Out with Java: From Control Structures through Objects (7th Edition) (What's New in Computer Science)
Computer Science: An Overview (13th Edition) (What's New in Computer Science)
Java: An Introduction to Problem Solving and Programming (8th Edition)
Database Concepts (8th Edition)
- Question 4: (30 marks) A Math teacher is teaching Math course to a set of classes (each class may have different number of students) and want to check the behavior of his students in a homework report. The teacher gave the classes the same exam and marked their answer and wants to know the class whose students got the highest average. Help the teacher in the required analysis of student’s marks by implementing a Java program ClassAverageMArks2DimmArray using 2-dimensional array to store the students marks and then compute the average of each class student’s marks. The program has the following specification: • A Method titled averageClassMarks for computing the average (as double) of a class students marks (given to the method as a single-dimensional array) • Another Method titled averageAllClassesMarks for computing the average (as single array of double) of all the classes class student’s marks (given to the method as a 2dimensional array). This method has to repeatedly call the…arrow_forwardProgram in C language (Please solve part 2) Part one : Write a program that does the following: Creates int array array_1 of length 10. Creates int array array_2 of length 10. Takes int values from the user of for 10 values for array_1 and array_2, each. Creates a new int array array_3 which copies the values of array_1 and array_2, in interleaved order, into it. Prints out the contents of Prints out the contents of array_1, array_2 and array_3. Part two : Repeat Part one, but this time use arrays of char (instead of int), and stop receiving input into array_1 and array_2 when the user hits Enter / newline and insert a Null character into the arrayarrow_forward(Recursive Selection Sort) A selection sort searches an array looking for the smallest elementin the array. When that element is found, it’s swapped with the first element of the array. The process is then repeated for the subarray, beginning with the second element. Each pass of the arrayresults in one element being placed in its proper location. This sort requires processing capabilitiessimilar to those of the bubble sort—for an array of n elements, n – 1 passes must be made, and foreach subarray, n – 1 comparisons must be made to find the smallest value. When the subarray beingprocessed contains one element, the array is sorted. Write a recursive function selectionSort toperform this algorithmarrow_forward
- (Maximum element in an array) Implement the following method that returns the maximum element in an array . public static > E max (E[] list) Write a test program that prompts the user to enter 10 integers, invokes this method to find the max.arrow_forwardQuestion 4: (Find the minimum value in an array) Write a program that include a recursive function "recursiveMinimnm" that takes an integer array and the array size as arguments and returns the smallest element of the array. The function should stop processing and return when it receives an array of one element. Answer (2.5)arrow_forwardThe following recursive function returns the index of the minimum value of an array. Assume variable n is the size of the array. Modify the code so only a single recursive call is made when the second "if" statement is true.arrow_forward
- please code in python Forbidden concepts: arrays/lists (data structures), recursion, custom classes You have been asked to take a small icon that appears on the screen of a smart telephone and scale it up so it looks bigger on a regular computer screen.The icon will be encoded as characters (x and *) in a 3 x 3 grid as follows: (refer image1 ) Write a program that accepts a positive integer scaling factor and outputs the scaled icon. A scaling factor of k means that each character is replaced by a k X k grid consisting only of that character. Input Specification:The input will be an integer such that 0 < k ≤ 10. Output Specification:The output will be 3k lines, which represent each individual line scaled by a factor of k and repeated k times. A line is scaled by a factor of k by replacing each character in the line with k copies of the character. [refer image2]arrow_forward.“Dangling and wild pointers are known to be problems with pointers”. Justify the given statement with the helpof suitable examplearrow_forwardQ 1. How recursions are implemented in context to activation records? Give an example. (Example of factorial is not allowed)Write answer in your own words. Q2. Write a program that will sort an element of a linear array using Selection Sort method. After sorting the array, the program will search the element from the sorted array usingBinary Search method. (Use C++ language)arrow_forward
- (java)Case2: A company in Oman must maintain a huge database of its customers. The maintenance process requires frequent searches, addition, and deletion of the customers. Using an array of size 100 develop a program to store the customers phone numbers. The program displays a menu as below- 1: Add a customer 2: Delete a customer 3: Search a customer 4: Display all in the ascending orders 5: Display all in the descending orders 6: Quit For The ‘search’ and ‘delete’ functionality If the phone number does not exit then program should report that cutomer is not found in the database. While writng the program follow the instructions below- For Searching use Binary search For sorting in the ascending order use Selection sort For sorting in the descending order use Quick sortarrow_forward9. Consider a 2-by-5 integer array t (. a. Write a definition for t. b. How many rows does t have? c. How many columns does t have? d. How many elements does t have? e. Write the names of all the elements in the second row of t. f. Write the names of all the elements in the third column of t. g. Write a single statement that sets the element of t in row 1 and column 2 to zero. h. Write a series of statements that initialize each element of t to zero. Do not use an iteration statement. i. Write a nested for statement that initializes each element of t to zero. j. Write a statement that inputs the values for the elements of t from the terminal. k. Write a series of statements that determine and print the smallest value in array t. I. Write a statement that displays the elements of the first row of t. m. Write a statement that totals the elements of the fourth column of t. n. Write a series of statements that print the array t in tabular format. List the column indices as headings across…arrow_forwardIndicate true or false for the following statements: Every element in an array has the same type. The array size is fixed after it is declared. The array size declarator must be a constant expression. The array elements are initialized when an array is declared.arrow_forward
- C++ for Engineers and ScientistsComputer ScienceISBN:9781133187844Author:Bronson, Gary J.Publisher:Course Technology Ptr