logo

Implementing k-headix sort using heaps and radix sort

   

Added on  2019-10-18

2 Pages1031 Words262 Views
The goal of this assignment is to practice using heaps and sorting data, and to compare the efficiencyof a sorting method with varying parameters. You are to write a Java program to implement a k-headixsort. This is a combination of heapsort and radix sort. Your program will manipulate a number of heapslinked together in an order determined by an initial radix sort.Your program is to first take as input 2 values: n indicates the number of values to be sorted, and kindicates the number of values to store in each heap. You may assume that n is a multiple of k. Theprogram should then read a set of n integer values each of which is in the range 1..n.The program should represent the k values in each heap as an array. Create a min-heap from the first kvalues in the input list, a second min-heap from the next k values, etc. Note that because n is a multiple ofk, the last heap also contains exactly k values. You should use the most efficient method to create each ofthese heaps. Join the heaps together in a linked list, so that the 1st heap points to the 2nd, etc.Now apply a radix sort on the heaps, as follows:Each individual data item in the heap should be considered a “digit” for the purposes of the radix sort.Therefore a heap of k values can be considered to have k digits. There are n possible values for eachof these digits.At the end of the radix sort, the first heap in the linked list will be the “lowest” heap, the second willbe the next “lowest”, etc.Now repeatedly apply the following steps until the list of heaps is empty:Remove the smallest item from the first heap, and print it. Replace this item with the smallest itemfrom the second heap and apply trickle-down as necessary.Repeat this process, inserting the smallest item from the third heap into the second heap, ..., thesmallest item from the last heap into the next-to-last heap.When the last heap becomes empty, remove it from the linked list of heaps.Part A (70 marks): Submit the results of running your program on the input in the following files,available from the course home page: assn3input1.txt, assn3input2.txtFor each of the above, print the initial list of values, and then print the item removed and the remainingdata structure (i.e. “list of heaps”) as each item is removed, in a manner similar to the example shown onthe following page.Part B (20 marks): For this part, you must first construct a random sequence of integer values, with allvalues in the range 1..10000. This same random sequence must be used to compare the performance ofyour program for all of the following runs: (n = 10000, k = 10000), (n = 10000, k = 1000), (n = 10000, k = 100), (n = 10000, k = 10),(n = 10000, k = 1).You should provide the following information for each run: execution time, total swaps required bytrickle-down during initial construction of the heaps, and total swaps required as a result of a removeoperation. Note: you can check the current time in milliseconds using System.currentTimeMillis().Alternatively, you can investigate System.nanoTime().Submit the results of this comparison. For this part, the sorting output should be given electronically only, and should consist of only n, k, theinitial list of items and the sorted list of items.
Implementing k-headix sort using heaps and radix sort_1

End of preview

Want to access all the pages? Upload your documents or become a member.

Related Documents
Using Arrays for Sorting in Bash - Desklib
|7
|3564
|331