Discussão do artigo "Métodos de ordenação e sua visualização usando a MQL5"

 

Novo artigo Métodos de ordenação e sua visualização usando a MQL5 foi publicado:

A biblioteca Graphic.mqh foi projetada para trabalhar com gráficos na MQL5. O artigo fornece um exemplo de sua aplicação prática e explica a ideia de ordenação. O conceito geral de ordenação é descrito aqui, pois cada tipo de ordenação já possui pelo menos um artigo separado, enquanto que alguns tipos de ordenação são objetos de estudos detalhados.

A diferença nas opções de ordenação neste caso é reduzida a diferentes maneiras de particionar o array. Na versão original, os ponteiros se movem um para o outro dos lados opostos. O ponteiro esquerdo encontra o elemento que excede o pivô, enquanto o direito procura o menor, e eles são trocados. Em outra versão, ambos os ponteiros se movem da esquerda para a direita. Quando o primeiro ponteiro encontra o elemento "menor", ele move esse elemento para a localização do segundo ponteiro. Se o array contiver muitos elementos idênticos, o particionamento aloca espaço para elementos iguais ao pivô. Tal arranjo é aplicado, por exemplo, quando é necessário categorizar funcionários apenas por duas chaves — "M" (masculino) e "F" (feminino). O particionamento apropriado é exibido abaixo:

Princípio de particionamento

Autor: Dmitrii Troshin

 
Parece-me que os moderadores fizeram um trabalho igualmente bom :)
 
Дмитрий Трошин:
Pareceu-me que os moderadores não fizeram menos trabalho :)

O que, no entanto, não ajudou a tornar o exemplo mais claro - executar 24 tipos em meu i5 com 16 GB de memória não funcionou =(

 
Andrey Khatimlianskii:

O que, no entanto, não ajudou a tornar o exemplo mais claro - executar 24 tipos em meu i5 com 16 GB de memória não funcionou =(

Tente com 12 métodos - deve funcionar em algum lugar

Aqui estão os parâmetros do computador no qual o vídeo foi gravado

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, 
 
Дмитрий Трошин:
Pareceu-me que os moderadores fizeram o mesmo trabalho :)

Sim, editores, eles são implacáveis).

No geral, é interessante, mas não é como eu imaginava essa visualização. É interessante assistir, mas não dá uma compreensão do método.

 
Rashid Umarov:

Experimente com 12 métodos - deve funcionar em algum lugar

Aqui estão os parâmetros do computador em que o vídeo foi gravado.

Sim, ele funciona com 10 para mim.

O que quero dizer é que a tarefa não supercomplexa, à primeira vista, de visualizar classificações paralelas ainda não foi resolvida.

Talvez a primeira olhada esteja errada)

 
Andrey Khatimlianskii:

Talvez a primeira visão esteja errada.)

Há pelo menos uma outra solução baseada na abordagem descrita no artigo: distribuir toda a classificação em gráficos separados como scripts (use ChartApplyTemplate) usando Sleep().

Outra solução é mais complexa - uso econômico da funcionalidade do CCanvas. Parece-me que a programação é mais escrupulosa e demorada.

 
Andrey Khatimlianskii:

Quero dizer que a tarefa não supercomplicada à primeira vista de visualizar a classificação paralela não foi resolvida.

24 threads de classificação em 8 núcleos, além de threads separados de renderização e outras tarefas no sistema operacional - qualquer computador pode ser colocado em uma posição difícil.
 
Rashid Umarov:
24 threads de classificação em 8 núcleos, além de threads separados de renderização e outras tarefas no sistema operacional - qualquer computador pode ficar em uma posição desconfortável.
Essa é realmente uma tarefa difícil? 24 classificações em uma matriz de 100 elementos? Eu realmente não consigo entender.
 
Todos os 24 threads estão tentando obter recursos de 8 núcleos ao mesmo tempo. Como posso lidar com isso de forma que todos tenham o suficiente?
 
Rashid Umarov:
Todos os 24 threads estão tentando obter recursos de 8 núcleos ao mesmo tempo. Como lidar com isso de forma que haja o suficiente para todos?

Não tenho a menor ideia. E como isso é tratado no sistema operacional?

Ou o problema é que os primeiros 8 processos ocupam seus núcleos 100% e não permitem que ninguém mais os acesse?