diff options
| author | Magnus Auvinen <magnus.auvinen@gmail.com> | 2009-06-15 06:50:47 +0000 |
|---|---|---|
| committer | Magnus Auvinen <magnus.auvinen@gmail.com> | 2009-06-15 06:50:47 +0000 |
| commit | f9ef0293ff882b97cfe650e92fe0844c8920f4e3 (patch) | |
| tree | 04ab158acf9e844cebd7416d9367a451bdfe02e6 /src/base/tl/algorithms.hpp | |
| parent | 6309d7ad56357e3aecbfeb7096b434a03bdc70a8 (diff) | |
| download | zcatch-f9ef0293ff882b97cfe650e92fe0844c8920f4e3.tar.gz zcatch-f9ef0293ff882b97cfe650e92fe0844c8920f4e3.zip | |
renamed algorithms.hpp to algotithm.hpp
Diffstat (limited to 'src/base/tl/algorithms.hpp')
| -rw-r--r-- | src/base/tl/algorithms.hpp | 135 |
1 files changed, 0 insertions, 135 deletions
diff --git a/src/base/tl/algorithms.hpp b/src/base/tl/algorithms.hpp deleted file mode 100644 index 15e8e8a9..00000000 --- a/src/base/tl/algorithms.hpp +++ /dev/null @@ -1,135 +0,0 @@ -#ifndef TL_FILE_ALGORITHMS_HPP -#define TL_FILE_ALGORITHMS_HPP - -#include "range.hpp" - - -/* - insert 4 - v - 1 2 3 4 5 6 - -*/ - - -template<class R, class T> -R partition_linear(R range, T value) -{ - concept_empty::check(range); - concept_forwarditeration::check(range); - concept_sorted::check(range); - - for(; !range.empty(); range.pop_front()) - { - if(!(range.front() < value)) - return range; - } - return range; -} - - -template<class R, class T> -R partition_binary(R range, T value) -{ - concept_empty::check(range); - concept_index::check(range); - concept_size::check(range); - concept_slice::check(range); - concept_sorted::check(range); - - if(range.empty()) - return range; - if(range.back() < value) - return R(); - - while(range.size() > 1) - { - unsigned pivot = (range.size()-1)/2; - if(range.index(pivot) < value) - range = range.slice(pivot+1, range.size()-1); - else - range = range.slice(0, pivot+1); - } - return range; -} - -template<class R, class T> -R find_linear(R range, T value) -{ - concept_empty::check(range); - concept_forwarditeration::check(range); - for(; !range.empty(); range.pop_front()) - if(value < range.front()) - break; - return range; -} - -template<class R, class T> -R find_binary(R range, T value) -{ - range = partition_linear(range, value); - if(range.empty()) return range; - if(range.front() == value) return range; - return R(); -} - - -template<class R> -void sort_bubble(R range) -{ - concept_empty::check(range); - concept_forwarditeration::check(range); - concept_backwarditeration::check(range); - - // slow bubblesort :/ - for(; !range.empty(); range.pop_back()) - { - R section = range; - typename R::type *prev = §ion.front(); - section.pop_front(); - for(; !section.empty(); section.pop_front()) - { - typename R::type *cur = §ion.front(); - if(*cur < *prev) - swap(*cur, *prev); - prev = cur; - } - } -} - -/* -template<class R> -void sort_quick(R range) -{ - concept_index::check(range); -}*/ - - -template<class R> -void sort(R range) -{ - sort_bubble(range); -} - - -template<class R> -bool sort_verify(R range) -{ - concept_empty::check(range); - concept_forwarditeration::check(range); - - typename R::type *prev = &range.front(); - range.pop_front(); - for(; !range.empty(); range.pop_front()) - { - typename R::type *cur = &range.front(); - - if(*cur < *prev) - return false; - prev = cur; - } - - return true; -} - -#endif // TL_FILE_ALGORITHMS_HPP |