文章 "排序方法并利用 MQL5 进行可视化"

 

新文章 排序方法并利用 MQL5 进行可视化已发布:

Graphic.mqh 函数库以 MQL5 设计, 用来处理图形。本文提供了一个实际应用的例子, 并解释了排序的思路。这里描述排序的一般概念, 因为每种排序类型至少已经具有一篇单独的论文, 而有些排序类型更是详细研究的对象。

在这种情况下, 排序选项的差别因数组分区的不同的方式而减少。在原始版本中, 指针从相反一侧向彼此移动。左侧指针找到超过枢轴的元素, 而右侧的指针查找较小的元素, 并将它们互换。在另一个版本中, 两个指针从左到右移动。当第一个指针找到 "较小" 元素时, 它将该元素移动到第二个指针的位置。如果数组包含许多相同的元素, 则为元素分区分配的空间等于枢轴。例如, 当需要仅通过两个键 — "M" (男) 和 "F" (女) 对雇员进行分类时, 就应用这种分配。下面所示适当的分区:

分区原则

作者:Dmitrii Troshin

 
在我看来,版主的工作同样出色:)
 
Дмитрий Трошин:
在我看来,版主做的工作并不少:)

不过,这并没有让例子变得更清晰--在我的 16 GB 内存的 i5 上运行 24 sorts 并不成功 =(

 
Andrey Khatimlianskii:

然而,这并不能使示例更清晰--在内存为 16 GB 的 i5 上运行 24 种方法并不奏效 =(

用 12 种方法试试--应该能在某处运行

以下是拍摄视频的电脑参数

2017.05.25 11:19:34.700 Terminal        Windows 10 Pro (x64 based PC), IE 11.00, UAC, Intel Core i7  920 @ 2.67 GHz, RAM: 7215 / 12277 Mb, 
 
Дмитрий Трошин:
在我看来,版主也做了同样多的工作:)

是的,编辑,他们是无情的)。

总的来说很有趣,但与我想象中的可视化效果不同。观看很有趣,但并不能让人理解这种方法。

 
Rashid Umarov:

用 12 种方法试试--应该能在某处奏效

以下是拍摄视频的电脑参数。

是的,我用 10 种方法也能运行。

我想说的是,可视化并行排序这项乍一看并不复杂的任务仍然没有解决。

也许第一印象是错的 )

 
Andrey Khatimlianskii:

也许第一种观点是错误的 )

根据文章中描述的方法,至少还有一种解决方案--使用 Sleep() 将所有排序作为脚本分散到不同的图表中(使用ChartApplyTemplate)。

另一种解决方案更为复杂--经济地使用 CCanvas 功能。在我看来,这需要更细致和耗时的编程。

 
Andrey Khatimlianskii:

我的意思是,并行排序可视化这项乍一看并不复杂的任务还没有解决。

在 8 个内核上进行 24 个线程的排序,再加上操作系统中单独的渲染线程和其他任务,任何计算机都会陷入尴尬的境地。
 
Rashid Umarov:
在 8 个内核上进行 24 个线程的排序,再加上操作系统中渲染和其他任务的独立线程--任何一台计算机都会陷入困境。
这真的是一项艰巨的任务吗?24 个排序 100 个元素的数组?我真的无法理解。
 
所有 24 个线程都试图同时获得 8 个内核的资源。如何处理才能让每个人都有足够的资源?
 
Rashid Umarov:
所有 24 个线程都试图同时获得 8 个内核的资源。如何处理才能让每个人都有足够的资源?

我也不知道。操作系统又是如何处理的呢?

还是说问题出在前 8 个进程 100% 占用其内核,不让其他人访问?