Project 6: StringSort

Specialized sorts for string keys

Educational Objectives: After completing this assignment, the student should be able to accomplish the following:

Operational Objectives: Develop optimized implementations of the three string (key) sort algorithms LSD, MSD, and QS-3W, and conduct experiments with different characteristic alphabet and string populations with recommendations on when to us which sort.

You may have teams of 2 - 4 people. The team should compose a brief summary of work that explains the responsibilities and work products each member of the team accomplished. Also each team member should submit the project individually. Please make certain that the submissions for each member of a team are identical.

Change Log: This document is released for use and comment. Details may be changed or augmented based on commentary posted in the Project 6 Topics forum. Any substantive changes will be logged here.

Deliverables: Files:

lsd.h          # LSDSort() 
msd.h          # MSDSort()
qs3w.h         # QuickSort3w() 
ssspy.cpp      # spy & timer harness specialized to string sorts
readme.txt     # overview of team & project

Background: See Strings Notes for background overview of strings and specialized string sorts.

Procedural Requirements

  1. The official development | testing | assessment environment is g++47 -std=c++11 -Wall -Wextra on the linprog machines. Code should compile without error or warning.

  2. Each member of a team submits all team deliverables

  3. Deliverables submitted should be identical across all team members.

  4. The team makup is listed in the file header documentation of each submitted file (see C++ Style link for standards)

  5. File readme.txt explains how the software was developed, what responsibilities each team member had, how it was tested, and how it is expected to be operated.

  6. Copy the file LIB/proj6/submit.sh into your project directory and change its permissions to executable. Edit the file "deliverables.ss" to the specific files in your project. Submit the project by executing the script: submit.sh deliverables.ss

    Warning: Submit scripts do not work on the program and linprog servers. Use shell.cs.fsu.edu to submit projects. If you do not receive the second confirmation with the contents of your project, there has been a malfunction.

Code Requirements and Specifications

  1. Files lsd.h, msd.h, and qs3w.h contain the code implementing LSDSort, MSDSort, and QuickSort3w respectively.

  2. All three sort paradigms should be optimized for speed. If more than one version of a given sort is uses, place all versions in the same header file.

  3. File ssspy.cpp builds to ssspy.x, a client program that assesses runtime efficiency of the sorts by both clock time and number of character comparisons (and any other metric you find appropriate).

  4. Test data characteristics, results of tests, and recommendations should be given in file readme.txt.