2차원 배열을 2차원으로 정렬하기 - 페이지 3

[삭제]  
cameofx wrote >>
이것도 제가 그린 방법입니다. 1차원과 관련하여 인용한 참조가 저를 실망시켰습니다.(위의 게시물 참조). 따라서 논리적으로 ColumnNumber 및/또는 WorksheetNumber의 크기를 조정할 수 없습니다.
및/또는 BookNumber..RowNumber만. 2D, 3D 및 4D 배열에서 가장 왼쪽에 있는 브래킷 쌍입니다.


Gordon은 이미 확인했지만 당신이 내 예를 인용했기 때문에 내 게시물에 대한 당신의 해석이 정확한지 확인하기 위해 나도 응답해야 합니다.

 
1005phillip :


Gordon은 이미 확인했지만 당신이 내 예를 인용했기 때문에 내 게시물에 대한 당신의 해석이 정확한지 확인하기 위해 나도 응답해야 합니다.

그 게시물은 귀하의 답장을위한 것입니다. 귀하의 이름을 언급하는 것을 잊어 버렸습니다. 내 실수 :)

 

좋아 오래된 주제이지만 이 코드는 누군가가 두 번째 희미한 항목을 정렬하는 데 도움이 될 수 있습니다.

 int start(){

   double ldDest[ 6 ][ 2 ];
   double ldSource[ 6 ][ 2 ];
   ldSource[ 0 ][ 0 ] = 643 ;
   ldSource[ 0 ][ 1 ] = 3236 ;
   ldSource[ 1 ][ 0 ] = 46769 ;
   ldSource[ 1 ][ 1 ] = 523 ;
   ldSource[ 2 ][ 0 ] = 234 ;
   ldSource[ 2 ][ 1 ] = 435 ;
   ldSource[ 3 ][ 0 ] = 854 ;
   ldSource[ 3 ][ 1 ] = 3344 ;
   ldSource[ 4 ][ 0 ] = 8465 ;
   ldSource[ 4 ][ 1 ] = 2434 ;
   ldSource[ 5 ][ 0 ] = 1545 ;
   ldSource[ 5 ][ 1 ] = 341 ;
   _ArraySort2D(ldDest, ldSource, 1 );
   for ( int i = 0 ; i < ArrayRange (ldDest, 0 ); i++){      
       Print (i, " " , 1 , "= " ,ldDest[i, 1 ]);    
   }
}

void _ArraySort2D( double &rdDest[][], double _dSource[][], int _iSortIndex){
   
   int liSize[ 2 ];
   liSize[ 0 ] = ArrayRange (_dSource, 0 );
   liSize[ 1 ] = ArrayRange (_dSource, 1 );
   int liPosition;
   
   for ( int i = 0 ; i < liSize[ 0 ]; i++){
      liPosition = 0 ;
       for ( int j = 0 ; j < liSize[ 0 ]; j++){
         if (_dSource[i,_iSortIndex] > _dSource[j,_iSortIndex]){
           liPosition++;
         }
      }
       ArrayCopy (rdDest, _dSource, liPosition*liSize[ 1 ], i*liSize[ 1 ],  liSize[ 1 ]);
   }
}
 
void _ArraySort2D( double &rdDest[][], double _dSource[][], int _iSortIndex, int _iDirection=MODE_ASCEND){
   
   int liSize[ 2 ];
   liSize[ 0 ] = ArrayRange (_dSource, 0 );
   liSize[ 1 ] = ArrayRange (_dSource, 1 );
   int liPosition;
   
   for ( int i = 0 ; i < liSize[ 0 ]; i++){
       switch (_iDirection){
         case MODE_ASCEND:
            liPosition = 0 ;
             for ( int j = 0 ; j < liSize[ 0 ]; j++){
               if (_dSource[i,_iSortIndex] > _dSource[j,_iSortIndex]){
                 liPosition++;
               }
            }
             ArrayCopy (rdDest, _dSource, liPosition*liSize[ 1 ], i*liSize[ 1 ],  liSize[ 1 ]);
             break ;
         case MODE_DESCEND:
            liPosition = liSize[ 0 ]- 1 ;
             for (j = 0 ; j < liSize[ 0 ]; j++){
               if (_dSource[i,_iSortIndex] > _dSource[j,_iSortIndex]){
                 liPosition--;
               }
            }
             ArrayCopy (rdDest, _dSource, liPosition*liSize[ 1 ], i*liSize[ 1 ],  liSize[ 1 ]);
             break ;
      }
   }
}
그리고 하강....
 
정렬의 대안은 인덱스 테이블을 만드는 것입니다.
 // Cog[], Cog.EMA[], Cog.EMA.prev[], Cog.ticket[]

     int order[COGLINES];                 // Keep relative ordering of Cog,
     for ( int kk= 0 ; kk<COGLINES; kk++) { // Cog.EMA, Cog.EMA.prev and COG.ticket
         for ( int ii=kk; ii> 0 && COG[order[ii- 1 ]] > COG[kk]; ii--) {
            order[ii]=order[ii- 1 ];   // kk   cog[kk] order[kk]   cog[order[kk]]
        }                           // 0    3.      1           1.
        order[ii]=kk;               // 1    1.      2           2.
    }                               // 2    2.      0           3.

더 빠르고 다양한 1차원 배열에서 이해할 수 있는 변수 이름을 가진 다양한 데이터 유형을 허용합니다.

AryBuy[1][0] contains the ticket, AryBuy[1][1] contains the price.

int Buy.Ticket[] 및 double Buy.Price[]는 이해하기 쉽고 올바른 데이터 유형을 포함합니다.
 
LEHayes :


5개 정도의 전략을 공개하려다 보니 정말 지치고 힘들었어요. 그래서 이건 필수품이라기 보다는 약간의 멋스러움이 되었습니다.

저를 위해 이 기능을 작성할 수 있는 사람이라면 누구와도 거래할 용의가 있습니다. 나는 당신에게 몇 년 라이선스가 있는 제품을 선택할 수 있도록 도와줄 것입니다. 무료로 이 헷징 전략의 개인 사본을 평생 무료로 무제한 사용할 수 있습니다. 나는 모든 것을 하기에는 너무 벅차고 내 개발 팀은 이미 우리 판에 있는 것을 공개해야 하는 무거운 짐을 지고 있습니다. 팀 전체의 평균 수면 시간은 하루 4~6시간 정도라고 생각합니다.

분명히 나는 당신을 위해 이것을 쉽게 할 수 있는 사람이 아닙니다. 그러나 내가 Arrays의 언덕을 오르고 있다고 가정합니다. 하지만 아직도 주차장의 움푹 들어간 곳과 바위에 걸려 넘어지고 있습니다.... . . .

당신이 가지고 있는 것과 지식이 풍부한 다른 프로그래머들이 당신에게 해결책을 제시해 주었습니다. 비록 클루지긴 하지만: 시간을 들여 그것을 할 누군가가 필요합니다.

또한 주변에 수많은 mql 4 <=> Excel 인터페이스가 있습니다. Excel v2007에는 시트를 만든 후 시트를 확대할 수 없는 버그가 있지만 약간 불편할 뿐입니다. 그렇지 않습니다! 아직 수정하지 않은 것이 매우 절름발이이지만 진정한 MS 방식으로 그대로 두었다가 최신 v201x가 나오면 구매하도록 추가 유인책으로 사용할 것입니다.

선반에 많은 제품 이 준비되어 있습니다. 이제 모자를 바꾸고 코딩 케이지에서 잠시 벗어나 마케팅 및 판매에 집중할 시간이 아닐까요?

 

Russel & WHRoeder, 대단히 감사합니다. 그것들은 많은 도움이 될 것입니다!
저는 독학 프로그래머입니다. 내가 장치를 사용하고 스스로 테스트를 수행한다면(이것이 내가 정기적 으로 물건을 알아내기 위해 가는 방법입니다...) 얼마나 느린지 모릅니다.

@FourX : 계속 두들겨 ... 한 번에 하나의 어레이, 결국 거기에 도달하게 될 것입니다 ...

[삭제]  
Russell :
그리고 하강....

안녕 러셀


제안한 알고리즘은 2개 이상의 요소가 배열에 동일한 값을 전달하는 경우에만 꽤 잘 작동하며 정렬을 수행할 수 없습니다. ..예: ldSource[2][1] = 435, ldSource[3][ 1] = 435. 이러한 종류의 경우에 대한 제안 사항이 있습니다. 고마워



   ldSource[ 0 ][ 0 ] = 643 ;
   ldSource[ 0 ][ 1 ] = 3236 ;
   ldSource[ 1 ][ 0 ] = 46769 ;
   ldSource[ 1 ][ 1 ] = 523 ;
   ldSource[ 2 ][ 0 ] = 234 ;
   ldSource[ 2 ][ 1 ] = 435 ;
   ldSource[ 3 ][ 0 ] = 854 ;
   ldSource[ 3 ][ 1 ] = 435;
 
whroeder1 :
정렬의 대안은 인덱스 테이블을 만드는 것입니다.

더 빠르고 다양한 1차원 배열에서 이해할 수 있는 변수 이름을 가진 다양한 데이터 유형을 허용합니다.

int Buy.Ticket[] 및 double Buy.Price[]는 이해하기 쉽고 올바른 데이터 유형을 포함합니다.

이것은 다른 곳에서 자세히 논의되지 않은 중요한 접근 방식을 다루는 매우 유용한 게시물입니다.

비슷한 상황에서 삽입 정렬을 사용하여 인덱스를 구성해야 합니다.

오타가 있는지 물어봐도 될까요? 변수 ii는 for 루프의 본문 내부에만 존재한다는 것을 이해합니까?

나는 이것이 테스트되지 않은 예제 코드이거나 가볍게 편집된 작업 코드일 수 있고 현학적인 시도가 아니라는 것을 이해하지만 궁금합니다.

자주 유익한 게시물에 감사드립니다.

 

코드 #23 & #24를 보았을 때 정렬하려면 고유한 키가 필요합니다...

# 25의 논리 나는 때때로 나를 사용합니다