排序 - 堆排序、快速排序、基数排序(静态链表)(C++)

前言:

在此之前,我分别写了堆排、快排、基数排序三篇文章,现在来进行一下总结,大家如果看过这三篇文章,会发现其中很多成员函数一模一样,嘿嘿嘿,说道这里,大家一定有一种能不能进行代码重用呢?答案当然是:可以啦!
所以,我们将上述三个独立的算法整合到一起,命名为Sort类,其中的成员函数和成员变量都没有发生改变,只是进行了3次Ctrl+C和3次Ctrl+V,然后对main()函数进行了改动,然后就没有然后了,大功告成。得意

完整代码如下:

//#pragma once

#include <iostream>
using namespace std;

const int Cutoff = 28;  //阈值,当子序列元素个数小于Cutoff时,采用简单排序(在快排中)
const int RADIX = 10;  //进制数
const int MaxDigit = 4;  //单个元素所具有的的最大位数

//桶元素节点
struct Node
{
	int key;  //待排数据
	struct Node* next;  //指向下一个桶节点的指针
};
//桶头节点
struct HeadNode
{
	struct Node *head, *tail;
};
typedef struct HeadNode Bucket[RADIX];

template <class T>
class Sort
{
private:
	Bucket B;  //桶
	T * A;  //存放堆元素的数组
	int N;  //堆中的元素个数

public:
	Sort(int InputSize);  //构造函数
	~Sort() { delete[] A; cout << "析构函数执行成功" << endl; }  //析构函数

	//堆排序
	void HeapSort();  //堆排序
	void PercDown(int p, int N);  //将N个元素的数组中以A[p]为根的子堆调整为最大堆

	//快速排序
	void QuickSort(int Left, int Right);  //递归进行快排
	T Median3(int Left, int Right);  //选主原(轴
  • 4
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值