0% found this document useful (0 votes)
122 views2 pages

Tes 2017

The document contains instructions for 5 programming projects related to advanced sorting algorithms: 1) Modify a partition program to always use the highest index element as the pivot. 2) Modify a quicksort program to count the number of copies and comparisons during a sort. 3) Extend a partition program to find the median of an array by recursively partitioning subarrays until the pivot is the median. 4) Modify a selection program to allow selecting an arbitrary element rather than just the median. 5) Implement a radix sort as described in the chapter to handle variable data amounts and digit numbers.

Uploaded by

Yohanes Suyanto
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
122 views2 pages

Tes 2017

The document contains instructions for 5 programming projects related to advanced sorting algorithms: 1) Modify a partition program to always use the highest index element as the pivot. 2) Modify a quicksort program to count the number of copies and comparisons during a sort. 3) Extend a partition program to find the median of an array by recursively partitioning subarrays until the pivot is the median. 4) Modify a selection program to allow selecting an arbitrary element rather than just the median. 5) Implement a radix sort as described in the chapter to handle variable data amounts and digit numbers.

Uploaded by

Yohanes Suyanto
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 2

Programming Projects

Algoritme dan Struktur Data Pra-S2 Ilkom 2017


Mei 2017

Advanced Sorting
Writing programs that solve the Programming Projects helps to solidify your under-
standing of the material and demonstrates how the chapter?s concepts are applied.
(As noted in the Introduction, qualified instructors may obtain completed solutions
to the Programming Projects on the publisher?s Web site.)

7.1 Modify the partition.java program (Listing 7.2) so that the partitionIt() method
always uses the highest-index (right) element as the pivot, rather than an
arbitrary number. (This is similar to what happens in the quickSort1.java
program in Listing 7.3.) Make sure your routine will work for arrays of three
or fewer elements. To do so, you may need a few extra statements.

7.2 Modify the quickSort2.java program (Listing 7.4) to count the number of copies
and comparisons it makes during a sort and then display the totals. This pro-
gram should duplicate the performance of the QuickSort2 Workshop applet, so
the copies and comparisons for inversely sorted data should agree. (Remember
that a swap is three copies.)

7.3 In Exercise 3.2 in Chapter 3, we suggested that you could find the median of
a set of data by sorting the data and picking the middle element. You might
think using quicksort and picking the middle element would be the fastest way
to find the median, but there?s an even faster way. It uses the partition algo-
rithm to find the median without completely sorting the data. To see how
this works, imagine that you partition the data, and, by chance, the pivot
happens to end up at the middle element. You?re done! All the items to
the right of the pivot are larger (or equal), and all the items to the left are
smaller (or equal), so if the pivot falls in the exact center of the array, then
it?s the median. The pivot won?t end up in the center very often, but we
can fix that by repartitioning the partition that contains the middle element.
Suppose your array has seven elements numbered from 0 to 6. The middle is
element 3. If you partition this array and the pivot ends up at 4, then you
need to partition again from 0 to 4 (the partition that contains 3), not 5 to 6.
If the pivot ends up at 2, you need to partition from 2 to 6, not 0 to 1. You
continue partitioning the appropriate partitions recursively, always checking
if the pivot falls on the middle element. Eventually, it will, and you?re done.

1
Because you need fewer partitions than in quicksort, this algorithm is faster.
Extend Programming Project 7.1 to find the median of an array. You?ll make
recursive calls somewhat like those in quicksort, but they will only partition
each subarray, not completely sort it. The process stops when the median is
found, not when the array is sorted.

7.4 Selection means finding the kth largest or kth smallest element from an array.
For example, you might want to select the 7 th largest element. Finding the
median (as in Programming Project 7.2) is a special case of selection. The
same partitioning process can be used, but you look for an element with a
specified index number rather than the middle element. Modify the program
from Programming Project 7.2 to allow the selection of an arbitrary element.
How small an array can your program handle?

7.5 Implement a radix sort as described in the last section of this chapter. It should
handle variable amounts of data and variable numbers of digits in the key. You
could make the number-base variable as well (so it can be something other than
10), but it will be hard to see what?s happening unless you develop a routine
to print values in different bases.

You might also like