66 lines
1.5 KiB
C++
66 lines
1.5 KiB
C++
// Copyright (C) 2003 Davis E. King (davis@dlib.net)
|
|
// License: Boost Software License See LICENSE.txt for the full license.
|
|
#ifndef DLIB_SEQUENCE_SORt_2_
|
|
#define DLIB_SEQUENCE_SORt_2_
|
|
|
|
#include "sequence_sort_abstract.h"
|
|
#include "../algs.h"
|
|
#include "../sort.h"
|
|
|
|
namespace dlib
|
|
{
|
|
|
|
template <
|
|
typename seq_base
|
|
>
|
|
class sequence_sort_2 : public seq_base
|
|
{
|
|
typedef typename seq_base::type T;
|
|
|
|
public:
|
|
|
|
/*!
|
|
this is a version of the QuickSort algorithm
|
|
this uses the dlib::qsort_array function
|
|
!*/
|
|
|
|
void sort (
|
|
);
|
|
|
|
|
|
};
|
|
|
|
template <
|
|
typename seq_base
|
|
>
|
|
inline void swap (
|
|
sequence_sort_2<seq_base>& a,
|
|
sequence_sort_2<seq_base>& b
|
|
) { a.swap(b); }
|
|
|
|
// ----------------------------------------------------------------------------------------
|
|
// ----------------------------------------------------------------------------------------
|
|
// member function definitions
|
|
// ----------------------------------------------------------------------------------------
|
|
// ----------------------------------------------------------------------------------------
|
|
|
|
template <
|
|
typename seq_base
|
|
>
|
|
void sequence_sort_2<seq_base>::
|
|
sort (
|
|
)
|
|
{
|
|
if (this->size() > 1)
|
|
{
|
|
dlib::qsort_array(*this,0,this->size()-1);
|
|
}
|
|
}
|
|
|
|
// ----------------------------------------------------------------------------------------
|
|
|
|
}
|
|
|
|
#endif // DLIB_SEQUENCE_SORt_2_
|
|
|