00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026 #ifndef _MPCL_UTIL_STRATEGY_BUBBLE_SORT_ALGORITHM__
00027 #define _MPCL_UTIL_STRATEGY_BUBBLE_SORT_ALGORITHM__
00028
00029 #include "sort_algorithm.hh"
00030
00031
00033 namespace mpcl
00034 {
00035
00037 namespace util
00038 {
00039
00041 namespace strategy
00042 {
00043
00055 template <typename TSequence>
00056 class TBubbleSortAlgorithm : public ISortAlgorithm<TSequence>
00057 {
00058
00059 public:
00060
00062 typedef
00063 typename ISortAlgorithm<TSequence>::iterator
00064 iterator;
00065
00067 typedef
00068 typename ISortAlgorithm<TSequence>::const_iterator
00069 const_iterator;
00070
00071
00072 public:
00073
00079 void execute (TSequence& rtSOURCE_SEQUENCE)
00080 {
00081
00082 if ( rtSOURCE_SEQUENCE.size() > 1 )
00083 {
00084 iterator J;
00085 iterator I = rtSOURCE_SEQUENCE.begin();
00086 const_iterator ktEnd = rtSOURCE_SEQUENCE.end();
00087
00088 for (; ( I != ktEnd ) ;++I)
00089 {
00090 for (J = I + 1; ( J != ktEnd ) ;++J)
00091 {
00092 if ( *I > *J )
00093 {
00094 swap (*I, *J);
00095 }
00096 }
00097 }
00098 }
00099
00100 }
00101
00102 };
00103
00104 }
00105
00106 }
00107
00108 }
00109
00110
00111 #endif // not _MPCL_UTIL_STRATEGY_BUBBLE_SORT_ALGORITHM__