
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 solution
Chapter 20 Solutions
C++ How To Program Plus Mylab Programming With Pearson Etext -- Access Card Package (10th Edition)
- C. Homework Assignment Task: Write a one-page CV using the provided template. Steps: 1. Use the CV guide to structure your CV. 2. Fill in each section with real information about yourself. 3. Format your CV neatly and use professional language. 4. Submit to the instructor before the next classarrow_forwardSimulate on a vertical time axis (with events labeled with the senders names A-D) the contention period of FOUR equally distanced Ethernet stations that all attempt to transmit at T=0 a minimally sized frame, in the style of the binary Exponential Backoff Algorithm. Assume that time is measured in slot times, and that exactly one slot time is needed to detect a collision (so that if two stations transmit at T=1 and collide, and one of them chooses a backoff time k=0, then that station will transmit again at T=2). Use as coin flip (source of randomness) an ID written in binary. use the bits in order from the least significant to the most significant. If for a given coin throw you need k bits, use the least significant ID bit extracted in the corresponding group of bits, as the least significant bit of the coin thrown. Start be writing the ID, which is 904012207 As example of the expected answer format, with the random sequence R: 100101010101001011001010 01 01011 10010 1010 1010 010…arrow_forwardBig State University The Big State University course catalog reads as follows: "To enroll in MIS 260, which is an advanced course, a student must complete two prerequisites: MIS 120 and MIS 222. A student who completes either one of these prerequisites and obtains the instructor's permission, however, will be allowed to take MIS 260." Tasks 1. Create a decision table that describes the Big State University course catalog regarding eligibility for MIS 260. Show all possible rules. 2. Simplify the table you just created. Describe the results. 3. Draw a simplified decision tree to represent the Big State University catalog. Describe the results. 4. Why might you use a decision tree rather than a decision table?arrow_forward
- What is the ALU result if the 4-bit ALU Control signal is 0100? What happens if the ALU Control signal is 0101?arrow_forward#include int main (void) { int i, *p, count } p = &count; = 10%; for (i = 5; i >= 0; i--) { count++; (*p) ++; } printf("count return 0; = %d, Have a wonderful day.\n", count); 1. [20 pts] What is the output of the program? Please explain why. 2. [15 pts] What is the gdb command to set a breakpoint in line 6 (p = &count;)? 3. [15 pts] Explain in your own words how the [break. need to use such command? ... if expr] command works. When might youarrow_forwardPlease run and debug the following program and answer the questions.arrow_forward
- (OnlineGDB) #include <stdio.h>int main(void) {int a;char *s;int v0 = 4, v1 = 5, v2 = 6, v3 = 1, v4 = 2;printf("Exercise 1:\n====================\n");switch(v0) {case 0: printf("Hello October\n"); break;case 1: printf("Go Kean!\n"); break;case 2: printf("Academic Building Center \n"); break;case 3: printf("UNION \n"); break;case 4: printf("Go ");case 5: printf("Kean! \n");default: printf("Have a great semester! \n"); break;}for(a=5; a<v1; a++) {printf("Kean");}printf("\n");if (v2 == 6) {s = "Go";}else {s = "Hello";}if(v3 != v4) {printf("%s Kean!\n",s);} else {printf("%s Computer Science!\n",s);}return 0;} Assume the following codes are added between line 36 (}) and line 38 (return 0;) v0>0 ? ++v1, ++v2 : --v3; Please give the values of v0, v1, v2, v3, and v4 after this line and explain the reason. You can test the program to verify your answer if you like.arrow_forward#include <stdio.h>int main(void) {int a;char *s;int v0 = 4, v1 = 5, v2 = 6, v3 = 1, v4 = 2;printf("Exercise 1:\n====================\n");switch(v0) {case 0: printf("Hello October\n"); break;case 1: printf("Go Kean!\n"); break;case 2: printf("Academic Building Center \n"); break;case 3: printf("UNION \n"); break;case 4: printf("Go ");case 5: printf("Kean! \n");default: printf("Have a great semester! \n"); break;}for(a=5; a<v1; a++) {printf("Kean");}printf("\n");if (v2 == 6) {s = "Go";}else {s = "Hello";}if(v3 != v4) {printf("%s Kean!\n",s);} else {printf("%s Computer Science!\n",s);}return 0;} Output: Exercise 1:====================Go Kean! Have a great semester! Go Kean! Please only modify the initial value of v0, v1, v2, v3 and v4 to get the following output. Youneed to show your program output (in the screenshot) and submit the code that youmodified.Exercise 1:====================Hello OctoberKeanHello Computer Science!arrow_forward(OnlineGDB) 1. Please read and run the following code and answer the questions.#include <stdio.h>int main(void) {int a;char *s;int v0 = 4, v1 = 5, v2 = 6, v3 = 1, v4 = 2;printf("Exercise 1:\n====================\n");switch(v0) {case 0: printf("Hello October\n"); break;case 1: printf("Go Kean!\n"); break;case 2: printf("Academic Building Center \n"); break;case 3: printf("UNION \n"); break;case 4: printf("Go ");case 5: printf("Kean! \n");default: printf("Have a great semester! \n"); break;}for(a=5; a<v1; a++) {printf("Kean");}printf("\n");if (v2 == 6) {s = "Go";}else {s = "Hello";}if(v3 != v4) {printf("%s Kean!\n",s);} else {printf("%s Computer Science!\n",s);}return 0;} What is the output of the program? Please explain why.arrow_forward
- 1.[30 pts] Answer the following questions: a. [10 pts] Write a Boolean equation in sum-of-products canonical form for the truth table shown below: A B C Y 0 0 0 1 0 0 1 0 0 1 0 0 0 1 1 0 1 0 0 1 1 0 1 0 1 1 0 1 1 1 1 0 a. [10 pts] Minimize the Boolean equation you obtained in (a). b. [10 pts] Implement, using Logisim, the simplified logic circuit. Include an image of the circuitarrow_forwardIn the past, encryption and decryption were mostly done by substitution and permutation of letters in a text message. study those classic cryptographic schemes Then, develop an automatic cipher using Javascript The cipher should be able to perform the following tasks: generate keys encrypt a given plaintext message with a key selected from the list of keys generated decrypt a given ciphertext message with a known cipher keyarrow_forwardList reasons why teachers should and shouldn’t be replaced by computers? State your response in a descriptive context. Provide five references from the with internet with your answers.arrow_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 LearningProgramming Logic & Design ComprehensiveComputer ScienceISBN:9781337669405Author:FARRELLPublisher:Cengage
- EBK JAVA PROGRAMMINGComputer ScienceISBN:9781337671385Author:FARRELLPublisher:CENGAGE LEARNING - CONSIGNMENTNew Perspectives on HTML5, CSS3, and JavaScriptComputer ScienceISBN:9781305503922Author:Patrick M. CareyPublisher:Cengage LearningSystems ArchitectureComputer ScienceISBN:9781305080195Author:Stephen D. BurdPublisher:Cengage Learning




