ordenando a matriz de 2 dimensões por segunda dimensão - página 2

 

Ei Gordon, obrigado pela atenção, enquanto lia esse código, fui lembrado de que já tenho um trecho de código que passa pela cesta para encontrar o maior perdedor, eu poderia usá-lo junto com um clone dele invertido para encontrar o maior vencedor, o vencedor é maior que o perdedor, então eu posso fechar cada um deles. Isso vai funcionar para o que eu preciso. Às vezes, apenas dormir sobre ela é o melhor gerador de código de todos eles. Bolas, provavelmente eu poderia codificar isto durante a noite. Não é uma grande modificação. Não preciso tê-los todos fechados ao mesmo tempo. Passamos por isso na primeira vez, depois no próximo tick ou vela podemos passar por isso novamente, ou como eu estava falando antes, tenho outra característica que dispara ao mesmo tempo que algo como isto seria útil. Eu posso simplesmente incorporá-lo a essa codificação de características.

Obrigado pelo abridor de olhos Gordon.

 

Se você quiser classificar as matrizes por preço, por que não carregar o preço na primeira dimensão e o bilhete na segunda dimensão...... então você pode classificá-lo da maneira normal.

 

Sim, isso já havia sido pensado. Então basta copiar os dados para outra matriz em arranjo invertido para ordenar de volta da outra forma. O que decidi fazer foi muito mais simples e, na verdade, me adaptei muito melhor às minhas necessidades. Basicamente, eu percorro os negócios abertos e encontro o maior vencedor e o maior perdedor que é menos do que o maior vencedor, então eu fecho os dois. No próximo tick ou vela, ele repete o processo. Acabou muito bem.

 
gordon:

Independentemente do que você gostaria de chamar, a primeira dimensão em um array 2D é o nome do vetor arr_name[0,1,...,n][0], então tecnicamente o primeiro colchete detém a primeira dimensão; este também é o vetor que será classificado por ArraySort(). A partir do livro:

Já que estamos no assunto de ArraySort() vou mencionar duas peculiaridades não documentadas que encontrei ao longo do tempo (e ficaria feliz se alguém me confirmasse ou corrigisse...?):

  1. Se alguns dos elementos da primeira dimensão forem idênticos, eles não necessariamente manterão sua ordem. Obviamente, isto deve ser documentado se for "by-design", caso contrário, eu consideraria isto como um "bug".
  2. OrderSort() não funciona com arrays 4D (erro de retorno 4053). Novamente, isto deve ser documentado, mas não é.
Desculpem a resposta tardia companheiros... muitas coisas se atrapalharam... Asseguro-lhes que agradeço muito suas respostas.
FWIW estas são minhas respostas (em modo 'spammy' :( ) :
- Em arrays 1D nenhuma pergunta surge. Em arrays 2D, 3D, 4D o par mais à esquerda é sempre o par de braquetes de primeira dimensão é o gordon correto?
 
cameofx:
- Em arrays 1D não há dúvidas. Nas matrizes 2D, 3D, 4D, o par mais à esquerda é sempre a primeira dimensão do par de braquetes é o gordon correto?

Sim.

 
gordon:

Independentemente do que você gostaria de chamar, a primeira dimensão em um array 2D é o nome do vetor arr_name[0,1,...,n][0], então tecnicamente o primeiro colchete detém a primeira dimensão; este também é o vetor que será classificado por ArraySort(). A partir do livro:

Já que estamos no assunto de ArraySort() mencionarei duas peculiaridades não documentadas que encontrei ao longo do tempo (e ficaria feliz se alguém me confirmasse ou corrigisse...?):

  1. Se alguns dos elementos da primeira dimensão forem idênticos, eles não necessariamente manterão sua ordem. Obviamente, isto deve ser documentado se for "by-design", caso contrário, eu consideraria isto como um "bug".
  2. OrderSort() não funciona com arrays 4D (erro de retorno 4053). Novamente, isto deve ser documentado, mas não é.
Desculpem a resposta tardia companheiros... muitas coisas se atrapalharam... Asseguro-lhes que agradeço muito suas respostas.
FWIW estas são minhas respostas :
- Na matriz 1D, nenhuma pergunta se levanta. Em arrays 2D, 3D, 4D o par mais à esquerda é sempre o par de braquetes de primeira dimensão. Este também é o meu entendimento.
int    a[50];       // A one-dimensional array of 50 integers.
double m[7][50];    // Two-dimensional array of seven arrays,
                    //each of them consisting of 50 integers
mas quando olho para esta explicação. A maneira como ela é descrita foi "Conjunto bidimensional de sete arrays. cada um deles consistindo de 50 inteiros " Ao contemplar isto & suas respostas... Isto deve
ser uma explicação errônea porque sugere que os 50 inteiros são mais parecidos com a linha/tamanho dos dados e 7 é a coluna/cabeçalho. Isto me levou a acreditar (erroneamente) que
a parte mais à direita era a fila/membros que devemos/conseguimos redimensionar convenientemente.
- Agradeço a você por compartilhar sua descoberta Gordon. Infelizmente, os testes são um luxo para mim hoje em dia. Só posso ter acesso ao computador e à internet de forma intermitente (é complicado).
Mesmo os testes em um gráfico morto provam ser um desafio... :( . Daí minha às vezes "compreensão distorcida". TBH, eu confio principalmente na memória e nas referências...(desculpe...).

PS : oops... não sabia que o antigo posto tinha entrado. Eu o editei.
 
cameofx:
[...] Esta deve ser uma explicação errada porque sugere que os 50 inteiros são mais parecidos com a linha/tamanho dos dados e 7 é a coluna/cabeçalho.

Não tenho certeza do que isso sugere, mas, independentemente disso, o mais à esquerda é a primeira dimensão. Grande parte da documentação é uma tradução do russo, muitas vezes não é uma tradução muito boa, então talvez este seja um desses casos. A coisa da coluna/linha é apenas uma metáfora; torna mais fácil para nós imaginar a matriz, mas não tem nada a ver com a implementação real. Se a primeira dimensão é uma "fila" ou uma "coluna" depende de u...

 
1005phillip:


Eu olho para a indexação e o dimensionamento da matriz na planilha padrão...Linha-Coluna (mnemônica "Romano-Católica").

1D Array: MyArray[RowNumber-1]

2D Array: MyArray[RowNumber-1][ColumnNumber-1][ColumnNumber-1

3D Array: MyArray[RowNumber-1][ColumnNumber-1][Worksheet-1] ....

Foi assim que eu também imaginei. a referência que citei a respeito da primeira dimensão me jogou fora...(ver post acima). Portanto, logicamente não podemos redimensionar a ColumnNumber e/ou WorksheetNumber
e/ou BookNumber...apenas o RowNumber. Que é o par mais à esquerda de suportes em arrays 2D, 3D e 4D.
 
cameofx:
Portanto, logicamente não podemos redimensionar [...]

É isso mesmo.

 
gordon:

Não tenho certeza do que isso sugere, mas, independentemente disso, o mais à esquerda é a primeira dimensão. Grande parte da documentação é uma tradução do russo, muitas vezes não é uma tradução muito boa, então talvez este seja um desses casos. A coisa da coluna/linha é apenas uma metáfora; torna mais fácil para nós imaginar a matriz, mas não tem nada a ver com a implementação real. Se a primeira dimensão é uma "fila" ou uma "coluna" depende de u...

sim... infelizmente, muitos de nós - tenho certeza que estou falando por muitos novatos por aí... - depende demasiadas vezes da documentação existente...

Razão: