
Untitled
#ifndef _SORT_H
#define _SORT_H
#include <algorithm>
#include <QTimer>
#include <QtGlobal>
#include <QThread>
#include <QDebug>
template <typename T>class _Sort
{
static void sort(T* Buff, int l, int r)
{
int i=l;
int j=r;
int x=Buff[(l+r)/2];
do
{
while(Buff[i]<x) ++i;
while(Buff[j]>x) --j;
if(i<=j)
{
std::swap(Buff[i],Buff[j]);
i++; j--;
}
} while(i<=j);
if(l<j) sort(Buff,l,j);
if(i<r) sort(Buff,i,r);
}
class MyThread : public QThread
{
Q_OBJECT
T* Buff;
quint32 Size;
public:
MyThread(){}
MyThread(T* B,quint32 S) : Buff(B),Size(S){}
void run()
{
sort(Buff,0,Size-1);
exec();
}
};
public:
static bool qSort(T* Buff, size_t Size, uint ThreadCount)
{
if (Buff == NULL || Size <= 1 || ThreadCount%2 != 0 || ThreadCount < 2)
{
qDebug() << "Error in params";
return false;
}
MyThread Thread(Buff,Size);
Thread.start();
return true;
}
};
#endif // _SORT_H