72 lines
No EOL
3.7 KiB
C
72 lines
No EOL
3.7 KiB
C
/**
|
|
* @mainpage
|
|
* @section intro Introduction
|
|
*
|
|
* The implementation and evaluation of a collection of Sorting and Searching Algorithms.
|
|
*
|
|
* @section objective Assignment Objective
|
|
*
|
|
* The target collection those algorithms are operation on, is an 'Array Backed List'.
|
|
* This list shares (almost) the same interface (`list.h`) as the linked list from previous assignments
|
|
* but is implemented based on an array.
|
|
* Different sorting and searching algorithms are to be implemented using that list.
|
|
* A stopwatch shall be implemented that is used to measure the time a certain algorithm requires to sort or search.
|
|
* Eventually the measured times for defined number of list items and algorithms are compared.
|
|
*
|
|
* **Configuration**
|
|
*
|
|
* The capacity of the backing array of the list is defined in `config.h` as `#define CAPACITY_INCREMENT`.
|
|
* This value defines also the number of items for enlarging the backing array. This means, the array grows
|
|
* always in steps of `CAPACITY_INCREMENT` items.
|
|
*
|
|
* @section assignment Assignment
|
|
*
|
|
* In this assignment various sorting and search algorithms shall be implemented in multiple steps.
|
|
*
|
|
* **Step 1:**
|
|
*
|
|
* Implemenation of an 'Array Backed List' by implementing files `array_backed_list.h`.
|
|
* This file implements `list.h` using an array as underlying collection instead of a linked list.
|
|
* In contrast to earlier assignments, the function `list_append(…)` was removed and `list_swap(…)` was added.
|
|
* The array shall have a certain capacity and need to be increased (with all consequences, such as of copying items)
|
|
* if another item is added to a 'full' list.
|
|
* As a benefit, random access to items is fast, which is required by (most) sorting and searching algorithms.
|
|
* For implementation details read and follow the instructions in file `array_backed_list.c`.
|
|
*
|
|
* **Step 2:**
|
|
*
|
|
* Implementation of the infrastructure for selecting and using sorting and searching algorithms as well as
|
|
* for measuring the time a certain algorithm takes for completing its operation.
|
|
*
|
|
* **Step 3:**
|
|
*
|
|
* Implemenation of the following sorting algorithms:
|
|
* - - TO BE DEFINED --
|
|
*
|
|
*
|
|
* The library 'allocator' is provided for memory allocation functionality that integrates with unit testing. Behind the facade,
|
|
* allocats memory dynamically similar to `malloc`. Allocated memory must be freed when it is not used anymore. The 'allocator'
|
|
* library must be used for memory alloction operations, otherwise unit tests will fail.
|
|
*
|
|
*
|
|
* -# Implement 'array_backed_list.c' against interface indirectly declared in 'list.h':
|
|
* Make the program and tests compile: Implement all functions in all relevant files declared in the headers
|
|
* EMTPY (return nothing, 0, false, ... as required).
|
|
* - All unit tests shall run but FAIL after this step
|
|
* - **--COMMIT--**
|
|
* -# Implement the empty functions one by one to make the unit tests.
|
|
* - Because most unit tests depends on `list_obtain(…)`, `list_release(…)`, `list_is_valid(…)`,
|
|
* `list_is_empty(…)`, `list_insert(…)`, and `list_get_size(…)` it makes sense to implement those
|
|
* functions in one step.
|
|
* - The purpose of a function is specified as API documentation within the header files.
|
|
* - Obey comments in source files. Run the unit tests frequently and fix failures.
|
|
* - **--COMMIT-- after each implemented function.**
|
|
*
|
|
*
|
|
* @section notes Notes
|
|
* -# make cleantest: This new make target for clearing the console, building, and running unit test is available.
|
|
* -# Sometimes changes are not properly detected by incremental builds. If something very strange
|
|
* happens during compilation, try to run `make clean` followed by `make` to start a clean build.
|
|
* This approach is also recommended after everthing is done, because some compiler warning appears
|
|
* only in clean builds.
|
|
*/ |