📄 sort.h
字号:
#ifndef CSORT_H
#define CSORT_H
/***********************************************************************
* 介 绍: 类 CSort 主要实现对任意结构体数组或简单链表的快速排序
*
* 说 明: 创建后调用Initalization()初始化对象时要把参数设好, 否
* 则不能正常工作, 比较复杂, 要看这个函数的参数说明.在初
* 始化好对象后调用SetSortKey()来设置排序的具体参数(主关
* 键字及其他关键字和升降序).最后调用GetSorted()来获取排
* 序结果, 直接存放在原数组或链表中.
*
* 输 出: 排序结果可调用GetSorted()函数, 并返回给数组或链表.
*
* 使用说明: 1. 用CSort来定义一个对象实例cs(只能使用一个)
* 2. 调用InitObject(&cs)来初始化cs
* 3. 调用cs.Initialization()方法, 设置好初始环境
* 4. 调用cs.SetSortKey()来设置排序的关键字及类型(注意参数)
* 5. 调用cs.GetSorted()方法进行排序, 结果存放在原数组或链表
* 6. 调用cs.PrintInfo()可以查看排序的时间及其他信息
* 7. 使用完后调用cs.Destroy()把实例cs销毁释放空间.
**********************************************************************/
typedef struct CSort
{
void (*Create)(void);
void (*Destroy)(void);
void (*InitializationArray)(void *const, int, int);
void (*InitializationLink)(void *const, int, void **);
int (*GetSorted)(void);
int (*SetSortKey)(int, int, void *const, void *const, int, int);
void (*PrintInfo)(void);
}CSort;
void InitObject(CSort * obj);
void Create(void);
void Destroy(void);
/************************************************************************
* 函 数: 初始化函数 Initialization()
* 说 明: 最重要的函数, 排序准备工作, 各个参数要设对, 不同的是最后一
* 个参数, 如果传的是数组地址则要设定数组元素的个数, 如果传入
* 的是链表则要把它的pNext地址作为参数传入,这也是唯一区分排序
* 容器的地方, 只能调用两者其一.(在这儿分成下面两个函数)
* 参 数: 1. pArray 待排序数组或链表地址
* 2. iTSize 单元元素结构体大小
* 3. iAcount 或 ppNextAddr
* (1)iAcount 数组元素的个数 传入此参数将在这个数组内排序
* (2)ppNextAddr 节点中pNext的地址 传入此参数则动态排序
***********************************************************************/
void InitializationArray(void *const pArray, int iTSize, int iACount);
void InitializationLink(void *const pArray, int iTSize, void **ppNextAddr);
/* 获取排序结果 */
int GetSorted(void);
/************************************************************************
* 函 数: 参数设置函数 SetSortKey()
* 说 明: 设置排序的关键字及排序方式
* 参 数: 1. iOrder 排序关键字的次序 从0到9 主关键字为0, 不能间断设置
* 2. iSortType 升序 1, 降序 -1
* 3. pArray 待排序数组或链表地址
* 4. pKey 关键字在第一个元素结构体中的地址
* 5. iKeySize 这个关键字的空间大小, 整型和浮点型传入0, 字符型用
* sizeof求出, 双精度型传入-1.
* 6. iUse 这个第iOrder个关键字可用1, 不可用0
***********************************************************************/
int SetSortKey(int iOrder, int iSortType, void *const pArray,
void *const pKey, int iKSize, int iUse);
/* 输出排序过程的信息 */
void PrintInfo(void);
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -