递归火山软件开发平台

标题: 内存数组如何造?再才能有易语言的数组排序一样快?? [打印本页]

作者: 呵呵仙8    时间: 2023-11-25 21:02
提示: 作者被禁止或删除 内容自动屏蔽
作者: weilai    时间: 2023-11-25 21:55
随便都易语言的快好几倍吧,你要排序什么类型的数组?
作者: weilai    时间: 2023-11-25 21:56
随便都比易语言的快好几倍吧
作者: 呵呵仙8    时间: 2023-11-25 22:00
提示: 作者被禁止或删除 内容自动屏蔽
作者: weilai    时间: 2023-11-25 22:10
呵呵仙8 发表于 2023-11-25 22:00
变整数的数组排序就OK了!!很多时候就是交换指针的多.也不知是不是自己算法有问题!还是套娃造成的慢!!苦恼 ...

(, 下载次数: 320)

作者: weilai    时间: 2023-11-25 22:11
直接用标准库的排序,性能应该是最高的
作者: 呵呵仙8    时间: 2023-11-25 22:25
提示: 作者被禁止或删除 内容自动屏蔽
作者: weilai    时间: 2023-11-25 22:30
火山数组类的速度排序速度很慢的,自己写个快排都比火山数组类快,用std::sort是最快的
作者: Xelloss0618    时间: 2023-11-25 22:34
呵呵仙8 发表于 2023-11-25 22:25
的确用火山数组类能快200毫秒!!但是,火山的数组类不能被第三使用,还是构造内存数组!
...

数组类为什么不能被第三方使用?传"取数组指针"的返回值就行了啊。
数组类实测比易语言慢,要快还是用 std::sort

<火山程序 类型 = "通常" 版本 = 1 />

方法 STD排序 <公开 静态 折叠 @嵌入式方法 = "">
参数 数组指针 <类型 = 变整数 注释 = "数值型数组类请提供\"取数组指针\"的返回值;" 注释 = "通用数值型数组请用\"取数组变量地址\".">
参数 数组成员数 <类型 = 整数>
参数 成员类型 <注释 = "提供数组成员的类型,比如: 整数、长整数等" @需求类型 = 数据类型 @匹配类型 = 通用数值型>
参数 从小到大排序 <类型 = 逻辑型 注释 = "为真表示从小到大进行排序,为假表示从大到小进行排序." @默认值 = 真>
{
    @ [](@<成员类型>* data, int size) {
    @     if (@<从小到大排序>)
    @         std::sort(data, data + size);
    @     else
    @         std::sort(data, data + size, [](@<成员类型>& lhs, @<成员类型>& rhs) { return lhs > rhs; });
    @ } ((@<成员类型>*)@<数组指针>, @<数组成员数>)
}

作者: 呵呵仙8    时间: 2023-11-25 23:26
提示: 作者被禁止或删除 内容自动屏蔽
作者: weilai    时间: 2023-11-25 23:51
肯定是有方法的,不过没看懂你说的啥意思,自定义比较方法排序吗
作者: 呵呵仙8    时间: 2023-11-26 00:04
提示: 作者被禁止或删除 内容自动屏蔽
作者: Xelloss0618    时间: 2023-11-26 00:42
文本数组类可以用这个,文本数组类的成员是文本指针,而不是文本型。
A码的,我尝试过字节集数组类,一直崩溃,不知道哪里出问题,就不继续了。


<火山程序 类型 = "通常" 版本 = 1 />

方法 文本数组排序 <公开 静态>
参数 文本数组 <类型 = 文本数组类>
参数 从小到大排序 <类型 = 逻辑型 注释 = "为真表示从小到大进行排序,为假表示从大到小进行排序." @默认值 = 真>
{
    @ INT_P count = @<文本数组>.data().GetCount();
    @ if (count <= 0) return ;
    @ if (@<从小到大排序>)
    @     std::sort(@<文本数组>.data().GetData(), @<文本数组>.data().GetData() + count, [](const WCHAR* lhs, const WCHAR* rhs) { return wcscmp(lhs, rhs) < 0; });
    @ else
    @     std::sort(@<文本数组>.data().GetData(), @<文本数组>.data().GetData() + count, [](const WCHAR* lhs, const WCHAR* rhs) { return wcscmp(lhs, rhs) > 0; });
}

作者: 小蜗牛    时间: 2023-11-26 09:04
本帖最后由 小蜗牛 于 2023-11-26 09:08 编辑

我自己写的快排...还可以绑定其它数组进行排序..通用排序对象可以看看符不符合你的需求..文本型的排序就不用看了..很垃圾..


(, 下载次数: 279)



作者: 793359277    时间: 2023-11-26 10:49
Xelloss0618 发表于 2023-11-26 00:42
文本数组类可以用这个,文本数组类的成员是文本指针,而不是文本型。
A码的,我尝试过字节集数组类,一直崩 ...

piv进程操作类,取模块句柄有BUG,留空会返回0,并不会返回exe的句柄,填写后才正常 (, 下载次数: 280)


作者: li327065266kun    时间: 2023-11-26 13:53
你这是调试模式,要用编译模式,编译比易语言快,调试比易语言慢...........
作者: Xelloss0618    时间: 2023-11-26 14:29
793359277 发表于 2023-11-26 10:49
piv进程操作类,取模块句柄有BUG,留空会返回0,并不会返回exe的句柄,填写后才正常

...

最近在对这个类升级改造,下次应该会修复
作者: 呵呵仙8    时间: 2023-11-26 15:14
提示: 作者被禁止或删除 内容自动屏蔽
作者: CPUCN    时间: 2023-12-1 09:08
你这两个相比好像没有什么可比性
一个是基础数据类型的数组
一个是类的方式
速度肯定会慢的。
作者: 呵呵仙8    时间: 2023-12-1 21:56
提示: 作者被禁止或删除 内容自动屏蔽




欢迎光临 递归火山软件开发平台 (https://bbs.voldp.com/) Powered by Discuz! X3.4