Sorting Library

Victor OSTERTAG and Alejandro RUIZ RODRIGUEZ

Friday 20th of September 2017

Plan

Sorting Library

OSTERTAG and RUIZ RODRIGUEZ

Comparing the algorithms

Designing the library 

Testing the library

Conclusion

Cranfield University

Intro

Sorting Library

OSTERTAG and RUIZ RODRIGUEZ

Cranfield University

Sort a sequence of integers

Return an array with the

sorted values

Our client

I'm not sure about

the size...

If you could give me an

array with the new values,

that'd be great!

Comparing

Sorting Library

OSTERTAG and RUIZ RODRIGUEZ

Cranfield University

Insertion VS Bubble

Sorting Library

OSTERTAG and RUIZ RODRIGUEZ

Cranfield University

Bubble

Insertion

SPEED

Insertion

SPACE

Tie

The rest

Sorting Library

OSTERTAG and RUIZ RODRIGUEZ

Cranfield University

Radix sort is far from ideal

We eliminate it from the options

The rest

Sorting Library

OSTERTAG and RUIZ RODRIGUEZ

Cranfield University

SPEED

Quick Sort

SPACE

Heap Sort

Final choice

Sorting Library

OSTERTAG and RUIZ RODRIGUEZ

Cranfield University

Heap Sort

Safest choice

Better worst-case speed

Better space complexity

Okay average speed

Sorting Library

OSTERTAG and RUIZ RODRIGUEZ

Cranfield University

Insertion VS Heap

As expected, < 30 elements, insertion sort is a bit better

Designing

Working environment

Sorting Library

OSTERTAG and RUIZ RODRIGUEZ

Cranfield University

Coded in Python

Pair programming

User friendly

Sorting Library

OSTERTAG and RUIZ RODRIGUEZ

Cranfield University

Many kinds of inputs:

[12, 15, 9, 5, 6, 75]

"5, 8, 9, 7, 9"

File

Command Line

Array & String

User friendly

Sorting Library

OSTERTAG and RUIZ RODRIGUEZ

Cranfield University

Easy to understand error messages:

Easy to use

from Sorter import Sorter

sorter = Sorter("4,5,8,9,6")
sorter.sort()
print(sorter.getToSort())
print(sorter.getSorted())
print(sorter.getNewPositions())
class Input:
    Members:
        array                 // Array created with the user's input
    Methods:
        void Constructor      // Constructor
        void checkString      // Check if the string is usable
        void checkArray       // Check if the array is usable
        int[] getArray        // Get the array

Sorting Library

OSTERTAG and RUIZ RODRIGUEZ

Cranfield University

Input Class

Sorting Library

OSTERTAG and RUIZ RODRIGUEZ

Cranfield University

class Sorter:
    Members:
        toSort                // Initial array given by user
        sorted                // Sorted initial array
        newPositions          // Auxiliary and optional array
    Methods:
        void Constructor      // Constructor
        void heapSort         // Sort the initial array
        void insertionSort    // Sort the initial array
        void sort             // Use the best sorting algorithm for the situation
        void moveDown         // Auxiliary function
        void swap             // Auxiliary function
        int[] Getters         // Get the array you want

Sorter Class

Tests

Sorting Library

OSTERTAG and RUIZ RODRIGUEZ

Cranfield University

Functionality Test

Sorting Library

OSTERTAG and RUIZ RODRIGUEZ

Cranfield University

Tons of different types of arrays

only zeros

Small size

Big size

Only negatives

Medium size

Test the sorting for

each functions

Test if the auxiliary

array is correct

Input test

Sorting Library

OSTERTAG and RUIZ RODRIGUEZ

Cranfield University

Testing each possible input

Testing each possible wrong input

Performance test

Sorting Library

OSTERTAG and RUIZ RODRIGUEZ

Cranfield University

1,000 random arrays

(size 1 to 1,000)

1,000 random arrays

(size 10,000 to 11,000)

Code Review

Sorting Library

OSTERTAG and RUIZ RODRIGUEZ

Cranfield University

They liked it!

(The design, the factorisation, ...)

BUT

Would like more documentation

Conclusion

Sorting Library

OSTERTAG and RUIZ RODRIGUEZ

Cranfield University

Conclusion

Sorting Library

OSTERTAG and RUIZ RODRIGUEZ

Cranfield University

Good results

Requirements respected

including the

optional part

Structure and algorithms could be improved

Sorting Library

By isvoli

Sorting Library

  • 698