mirror of https://github.com/qt/qtdatavis3d.git
81 lines
2.8 KiB
C++
81 lines
2.8 KiB
C++
/****************************************************************************
|
|
* *
|
|
* OpenNI 1.x Alpha *
|
|
* Copyright (C) 2011 PrimeSense Ltd. *
|
|
* *
|
|
* This file is part of OpenNI. *
|
|
* *
|
|
* OpenNI is free software: you can redistribute it and/or modify *
|
|
* it under the terms of the GNU Lesser General Public License as published *
|
|
* by the Free Software Foundation, either version 3 of the License, or *
|
|
* (at your option) any later version. *
|
|
* *
|
|
* OpenNI is distributed in the hope that it will be useful, *
|
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of *
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
|
|
* GNU Lesser General Public License for more details. *
|
|
* *
|
|
* You should have received a copy of the GNU Lesser General Public License *
|
|
* along with OpenNI. If not, see <http://www.gnu.org/licenses/>. *
|
|
* *
|
|
****************************************************************************/
|
|
#ifndef __XN_ALGORITHMS_H__
|
|
#define __XN_ALGORITHMS_H__
|
|
|
|
//---------------------------------------------------------------------------
|
|
// Includes
|
|
//---------------------------------------------------------------------------
|
|
#include <XnPlatform.h>
|
|
|
|
//---------------------------------------------------------------------------
|
|
// Types
|
|
//---------------------------------------------------------------------------
|
|
template<class T>
|
|
XnBool DefaultComparer(const T& arg1, const T& arg2)
|
|
{
|
|
return arg1 < arg2;
|
|
}
|
|
|
|
class XnAlgorithms
|
|
{
|
|
public:
|
|
template<class T, class Comparer>
|
|
static void BubbleSort(T elements[], XnUInt32 nCount, Comparer comp)
|
|
{
|
|
XnUInt32 n = nCount;
|
|
XnBool bSwapped;
|
|
T temp;
|
|
|
|
if (nCount == 0)
|
|
return;
|
|
|
|
do
|
|
{
|
|
bSwapped = FALSE;
|
|
for (XnUInt32 i = 0; i < n - 1; ++i)
|
|
{
|
|
if (!comp(elements[i], elements[i+1]))
|
|
{
|
|
// swap
|
|
temp = elements[i];
|
|
elements[i] = elements[i+1];
|
|
elements[i+1] = temp;
|
|
|
|
bSwapped = TRUE;
|
|
}
|
|
}
|
|
|
|
n -= 1;
|
|
|
|
} while (bSwapped);
|
|
}
|
|
|
|
template<class T>
|
|
static void BubbleSort(T elements[], XnUInt32 nCount)
|
|
{
|
|
BubbleSort(elements, nCount, DefaultComparer);
|
|
}
|
|
|
|
};
|
|
|
|
#endif // __XN_ALGORITHMS_H__
|