ultimatepp/uppdev/MergeSort/MergeSort.cpp
cxl 3cd394812c Merge continued
git-svn-id: svn://ultimatepp.org/upp/trunk@10263 f0d560ea-af0d-0410-9eb7-867de7ffcac7
2016-10-04 08:34:39 +00:00

49 lines
987 B
C++

#include <Core/Core.h>
void Reorder(const Vector<int>& order, Vector<int>& data)
{
LOG("----------------------");
ASSERT(data.GetCount() == order.GetCount());
Vector<int> reorder, ndx;
reorder.SetCount(order.GetCount());
ndx.SetCount(order.GetCount());
for(int q = reorder.GetCount(); --q >= 0;)
reorder[q] = q;
for(int i = 0; i < order.GetCount(); i++) {
int pi = reorder[order[i]];
DUMP(order[i]);
DUMP(pi);
Swap(data[i], data[pi]);
reorder[ ndx[i] ] = pi;
DUMPC(reorder);
DUMPC(data);
LOG("------------");
}
}
struct VectorLess {
bool operator()(const Vector<int>& a, const Vector<int>& b) const
{
return a[0] < b[0];
}
};
bool int_less(int a, int b)
{
return a < b;
}
bool vector_less(const Vector<int>& a, const Vector<int>& b)
{
return a[0] < b[0];
}
CONSOLE_APP_MAIN
{
Vector< Vector<int> > x;
for(int i = 0; i < 20; i++) {
x.Add().Add() = rand();
}
Sort(x, &vector_less);
DUMPCC(x);
}