马上注册,结交更多易友,享用更多功能,让你轻松玩转觅风论坛。
您需要 登录 才可以下载或查看,没有账号?立即注册
x
底层算法都已经写好了,基本数据类型的排序器也有了,缺少一个自定义数据类型,
由于我没有骚操作,教大家如何老老实实对【自定义数据】进行排序。
1、私有成员的类型
2、重构你的【比较】函数,我这里举了个例子,是先对参数二排序,再对参数三排序。
- .版本 2
- .程序集 排序器_自定义数据, 抽象排序器, , 一定得填上基类
- .程序集变量 m_data, 自定义数据, , "0"
- .程序集变量 m_save, 自定义数据
- .子程序 _初始化, , , 当基于本类的对象被创建后,此方法会被自动调用
- .子程序 _销毁, , , 当基于本类的对象被销毁前,此方法会被自动调用
- .子程序 排序, , 公开
- .参数 p_排序算法实现, 抽象排序算法, 参考, 本参数要求提供"抽象排序算法"的实现类
- .参数 p_欲排序的数组, 自定义数据, 参考 数组
- .参数 p_升序排列, 逻辑型
- .局部变量 l_p2int_this, 整数型
- .局部变量 l_this, 抽象排序器
- l_p2int_this = 指针到整数 (类自身 ())
- Exchange (l_p2int_this, l_this, p_欲排序的数组, m_data)
- .如果 (p_升序排列)
- p_排序算法实现.p_升序排列 (取数组成员数 (m_data), l_this)
- .否则
- p_排序算法实现.p_降序排列 (取数组成员数 (m_data), l_this)
- .如果结束
- Exchange (l_p2int_this, l_this, p_欲排序的数组, m_data)
- .子程序 去重复, , 公开
- .参数 p_排序算法实现, 抽象排序算法, 参考, 本参数要求提供"抽象排序算法"的实现类
- .参数 p_欲排序的数组, 自定义数据, 参考 数组
- .局部变量 l_p2int_this, 整数型
- .局部变量 l_this, 抽象排序器
- l_p2int_this = 指针到整数 (类自身 ())
- Exchange (l_p2int_this, l_this, p_欲排序的数组, m_data)
- p_排序算法实现.p_去重复 (取数组成员数 (m_data), l_this)
- Exchange (l_p2int_this, l_this, p_欲排序的数组, m_data)
- .子程序 比较, 整数型, 公开
- .参数 p_data1, 自定义数据
- .参数 p_data2, 自定义数据
- .判断开始 (p_data1.参数二 > p_data2.参数二 或 p_data1.参数二 = p_data2.参数二 且 p_data1.参数三 > p_data2.参数三)
- 返回 (1)
- .判断 (p_data1.参数二 = p_data2.参数二 且 p_data1.参数三 = p_data2.参数三)
- 返回 (0)
- .默认
- 返回 (-1)
- .判断结束
- .子程序 p_比较成员, 整数型, 公开, 已经重写此方法,本方法仅供排序算法自动调用。返回说明:比较值1>比较值2,返回1;比较值1=比较值2,返回0;比较值1<比较值2,返回-1
- .参数 被比较的成员下标, 整数型, , 即前一比较值
- .参数 作用比较的成员下标, 整数型, , 即后一比较值
- 返回 (比较 (m_data [被比较的成员下标], m_data [作用比较的成员下标]))
- .子程序 p_交换成员, , 公开, 已经重写此方法,并且子类必须重写此方法,本方法仅供排序算法自动调用。使用说明:本命令用于强制交换对象
- .参数 欲交换的成员下标, 整数型
- .参数 作交换的成员下标, 整数型
- ASM_交换_变量交变量 (m_data [欲交换的成员下标], m_data [作交换的成员下标])
- .子程序 p_覆写成员, , 公开, 本命令用于覆写成员
- .参数 被覆写的成员, 整数型
- m_data [被覆写的成员] = m_save
- .子程序 p_临时保存成员, , 公开, 本命令用于保存临时成员
- .参数 被保存的成员, 整数型
- m_save = m_data [被保存的成员]
- .子程序 p_比较临时成员, 整数型, 公开, 本命令用于比较临时成员和其他成员的大小
- .参数 欲比较的成员下标, 整数型
- 返回 (比较 (m_data [欲比较的成员下标], m_save))
- .子程序 p_删除成员, , 公开, 本命令用于去重复中删除成员
- .参数 欲删除的成员下标, 整数型
- 删除成员 (m_data, 欲删除的成员下标, )
复制代码- .版本 2
- .支持库 spec
- .局部变量 局_排序器, 排序器_自定义数据
- .局部变量 局_数据, 自定义数据, , "0"
- .局部变量 i, 整数型
- .局部变量 n, 整数型
- 置随机数种子 ()
- n = 100
- 重定义数组 (局_数据, 假, n)
- .计次循环首 (n, i)
- 局_数据 <i>.参数一 = “数据” + 到文本 (i)
- 局_数据 <i>.参数二 = 取随机数 (, ) ÷ 32767
- 局_数据 <i>.参数三 = 取随机数 (, )
- .计次循环尾 ()
- 局_排序器.排序 (快速排序_ASM, 局_数据, 真) ' 先按参数二排序,再按参数三
- 调试输出 (“排序后”)
- .计次循环首 (n, i)
- 调试输出 (局_数据 <i>.参数一, 局_数据 <i>.参数二, 局_数据 <i>.参数三)
- .计次循环尾 ()
复制代码
|