常见的排序算法模板实现
学过的东西总是很容易忘记,最近用模板整理 了常见的排序算法。涉及模板的知识在这里我就不细细的介绍了。
#pragma once
#define NULL 0
#define MARK -65535
template<class T> //声明
class CDaXiongTemplateSort
{
public:
CDaXiongTemplateSort();
~CDaXiongTemplateSort();
void SetMember(T*, int ); //初始化数据成员
T* BubbleSort(bool ascending = true); //冒泡排序 默认升序
T* SelectionSort(bool ascending = true); //选择排序
T* InsertionSort(bool ascending = true); //插入排序
T* ShellSort(bool ascending = true); //希尔排序
T* MergeSort(T*, int size, bool ascending = true); //归并排序 start 为起始标号,end 为结束标号
T* BucketSort(int n); //桶排序 n表示数的位数,只适用于正整数
protected:
T *m_num;
int m_length;
};
template<class T>
CDaXiongTemplateSort<T>::CDaXiongTemplateSort()
{
this->m_num = nullptr;
}
template<class T>
CDaXiongTemplateSort<T>::~CDaXiongTemplateSort()
{
if (nullptr != this->m_num)
{
delete[]this->m_num;
}