added CSVOutput

This commit is contained in:
2023-07-26 22:27:04 +08:00
parent 3103321585
commit b2ad30b12c
5 changed files with 288 additions and 68 deletions

View File

@@ -1,75 +1,75 @@
#ifndef HGL_ALGORITHM_SORT_INCLUDE
#define HGL_ALGORITHM_SORT_INCLUDE
#include<hgl/TypeFunc.h>
#include<hgl/CompOperator.h>
#include<string.h>
template<typename T> class SortBase
{
protected:
T *buffer; //数据
int number; //数据个数
Comparator<T> *comp; //比较函数类
public:
/**
* 本类构造函数
* @param buf 数据缓冲区
* @param n 数据个数
* @param c 数据大小比较类
*/
SortBase(T *buf,int n,Comparator<T> *c)
{
buffer =buf;
number =n;
comp =c;
}
virtual ~SortBase()=default;
int GetCount()const
{
return number;
}
int compare(const T &a,const T &b)
{
return comp->compare(a,b);
}
virtual int compare_by_index(int a,int b)
{
return comp->compare(buffer[a],buffer[b]);
}
virtual void exchange(T &a,T &b)
{
comp->exchange(a,b);
}
virtual void exchane_by_index(int a,int b) //交换两个数据
{
comp->exchange(buffer[a],buffer[b]);
}
virtual void cpy(T *dst,T *src)
{
comp->cpy(dst,src);
}
virtual void cpy_by_index(int dst,int src)
{
comp->cpy(buffer+dst,buffer+src);
}
virtual bool sort()=0; //排序
};//struct SortBase
namespace hgl
{
template<typename T> class SortBase
{
protected:
T *buffer; //数据
int number; //数据个数
Comparator<T> *comp; //比较函数类
public:
/**
* 本类构造函数
* @param buf 数据缓冲区
* @param n 数据个数
* @param c 数据大小比较类
*/
SortBase(T *buf,int n,Comparator<T> *c)
{
buffer =buf;
number =n;
comp =c;
}
virtual ~SortBase()=default;
int GetCount()const
{
return number;
}
int compare(const T &a,const T &b)
{
return comp->compare(a,b);
}
virtual int compare_by_index(int a,int b)
{
return comp->compare(buffer[a],buffer[b]);
}
virtual void exchange(T &a,T &b)
{
comp->exchange(a,b);
}
virtual void exchane_by_index(int a,int b) //交换两个数据
{
comp->exchange(buffer[a],buffer[b]);
}
virtual void cpy(T *dst,T *src)
{
comp->cpy(dst,src);
}
virtual void cpy_by_index(int dst,int src)
{
comp->cpy(buffer+dst,buffer+src);
}
virtual bool sort()=0; //排序
};//struct SortBase
//堆排序
template<typename T> class HeapSort:public SortBase<T>
{
@@ -141,13 +141,12 @@ namespace hgl
}
template<typename T>
bool Sort(List<T> &list,Comparator<T> *comp=Comparator<T>())
bool Sort(DataArray<T> &list,Comparator<T> *comp=Comparator<T>())
{
return Sort(list.GetData(),
list.GetCount(),
comp);
}
/*
//仅实现模拟虚拟成员函数即可,无需整个类重载
template<> int Comparator<BagCell>::compare(const BagCell &it1,const BagCell &it2) const