Data Structures and Algorithms in Java
GitHubAuthor
  • Preface
    • Syllabus
    • Schedule
  • 0. Getting Started
    • 0.1. Environment Setup
    • 0.2. Quiz
  • 1. Java Essentials
    • 1.1. Abstraction
    • 1.2. Implementation
    • 1.3. Unit Testing
    • 1.4. Quiz
  • 2. Priority Queues
    • 2.1. Simple Priority Queues
    • 2.2. Binary Heap
    • 2.3. Unit Testing
    • 2.4. Benchmarking
    • 2.5. Quiz
  • 3. Sorting Algorithms
    • 3.1. Abstraction
    • 3.2. Comparison-based Sort
    • 3.3. Divide & Conquer Sort
    • 3.4. Distribution-based Sort
    • 3.5. Quiz
    • 3.6. Homework
  • 4. Binary Search Trees
    • 4.1. Binary Search Trees
    • 4.2. Balanced BST
    • 4.2. AVL Trees
    • 4.3. Red-Black Trees
    • 4.4. Quiz
  • 5. Tries
    • 5.1. Concept
    • 5.2. Implementation
    • 5.3. Quiz
    • 5.4. Homework
  • 6. Disjoint Sets
    • 6.1. Concept
    • 6.2. Implementation
    • 6.3. Quiz
  • 7. Graphs
    • 7.1. Implementation
    • 7.2. Cycle Detection
    • 7.3. Topological Sorting
    • 7.4. Quiz
  • 8. Minimum Spanning Trees
    • 8.1. Abstraction
    • 8.2. Prim's Algorithm
    • 8.3. Kruskal’s Algorithm
    • 8.4. Edmonds' Algorithm
    • 8.5. Quiz
    • 8.6. Homework
  • 9. Network Flow
    • 9.1. Flow Network
    • 9.2. Ford-Fulkerson Algorithm
    • 9.3. Simplex Algorithm
    • 9.3. Quiz
  • 10. Dynamic Programming
    • 10.1. Fibonacci Sequence
    • 10.2. Tower of Hanoi
    • 10.3. Longest Common Subsequence
    • 10.4. Quiz
Powered by GitBook

©2023 Emory University - All rights reserved

On this page
  • Coding
  • Shell Sort: Hibbard
  • Radix Sort: MSD
  • Testing
  • Benchmarking
  • Submission

Was this helpful?

Export as PDF
  1. 3. Sorting Algorithms

3.5. Quiz

Quiz 3: Sorting Algorithms

Previous3.4. Distribution-based SortNext3.6. Homework

Last updated 2 years ago

Was this helpful?

Coding

Shell Sort: Hibbard

  • Create the class under the package that inherits .

  • Override the populateSequence() and getSequenceStartIndex() methods such that it performs Shell Sort by using the Hibbard sequence: 2k−1⇒{1,3,7,15,…}2^k - 1 \Rightarrow \{1, 3, 7, 15, \ldots \}2k−1⇒{1,3,7,15,…}.

  • Feel free to use the code in .

Radix Sort: MSD

  • Create the class under the package that inherits .

  • Override the sort() method such that it performs Radix Sort from the most significant digit (MSD) to the least significant digit (LSD).

  • Feel free to use the code in .

Testing

  • Create the class under the test package.

  • Test the correctness of your TernaryHeapQuiz using the method.

  • Add more tests for a more thorough assessment if necessary.

Benchmarking

  • Compare runtime speeds between LSDRadixSort and RadixSortQuiz for random cases.

  • Create a PDF file quiz3.pdf and write a report that includes charts and explanations to compare runtime speeds between:

    • ShellSortKnuth and ShellSortQuiz.

    • LSDRadixSort and RadixSortQuiz.

Submission

  • Push everything under the sort package to your GitHub repository:

  • Submit quiz3.pdf to Canvas.

Compare runtime speeds between ShellSortKnuth and ShellSortQuiz for random, ascending, and descending cases using the method.

Main:

Test:

testRuntime()
src/main/java/edu/emory/cs/sort
src/test/java/edu/emory/cs/sort
ShellSortQuiz
sort.comparison
ShellSort
ShellSortKnuth
RadixSortQuiz
sort.distribution
RadixSort
sort.distribution
SortQuizTest
sort
testRobustness()