1. 이중 유형의 변수를 ==를 통해 비교하려면 comme il faut가 아니라 온화하게 표현합니다. 2. 코드의 복잡성은 O(n^2)인 반면 정렬되지 않은 입력 시퀀스가 있는 주어진 문제에 대한 최악의 복잡성은 O(n)이어야 합니다. 3. 함수의 실제 사용에서는 반환된 배열에 포함된 실제 값의 수를 결정할 수 없기 때문에 코드가 작동하지 않습니다.
1. 이중 유형의 변수를 ==를 통해 비교하려면 comme il faut가 아니라 온화하게 표현합니다. 2. 코드의 복잡성은 O(n^2)인 반면 정렬되지 않은 입력 시퀀스가 있는 주어진 문제에 대한 최악의 복잡성은 O(n)이어야 합니다. 3. 함수의 실제 사용에서는 반환된 배열에 포함된 실제 값의 수를 결정할 수 없기 때문에 코드가 작동하지 않습니다.
실행 결과:
잘못된 값은 배열에서 제거되지 않은 빨간색으로 강조 표시됩니다.
주블릭? 순리에 맡기다. 이중 변수를 비교하는 것은 비교 전에 평가되지 않는 경우 매우 중요합니다.
1. 이중 유형의 변수를 ==를 통해 비교하려면 comme il faut가 아니라 온화하게 표현합니다. 2. 코드의 복잡성은 O(n^2)인 반면 정렬되지 않은 입력 시퀀스가 있는 주어진 문제에 대한 최악의 복잡성은 O(n)이어야 합니다. 3. 함수의 실제 사용에서는 반환된 배열에 포함된 실제 값의 수를 결정할 수 없기 때문에 코드가 작동하지 않습니다.
실행 결과:
잘못된 값은 배열에서 제거되지 않은 빨간색으로 강조 표시됩니다.
말도 안되는 소리 하지 마세요. 당신의 실수를 설명하거나 스스로 추측합니까? 전혀 어렵지 않아요...
글쎄, 속도면에서 그러한 술 경쟁이 이미 갔다면 나는 내 자신의 버전을 제공 할 것입니다.
int ArrayDeleteVal( int &a[], constint val) // вариант Semko
{
int size= ArraySize (a);
int i= 0 ,start,s,count;
while (i<size && a[i]!=val) i++; // ищем первый элемент массива со значением val
start=i; i++;
while (i<size && a[i]==val) i++; // ищем элемент массива со значением, не равным val
s=i; i++;
while ( true )
{
while (i<size && a[i]!=val) i++; // ищем элемент массива со значением val
count=i-s;
if (count> 6 ) { ArrayCopy (a,a,start,s,count); start+=count;} // если нужно скопировать более 6 элементов, то имеет смысл воспользоваться ArrayCopyelsefor (; s<i; start++,s++) a[start]=a[s]; // иначе простой циклif (i==size) break ;
i++;
while (i<size && a[i]==val) i++; // ищем элемент массива со значением, не равным valif (i<size) s=i; elsebreak ;
i++;
}
if (start<size) ArrayResize (a,start); else start=size;
return (start);
}
모든 옵션에 대한 테스트 스크립트를 작성했습니다. 다음은 1,000,000개 요소(약 1000개 추가 값)의 배열에 대한 결과입니다.
2018.11 . 1219 : 50 : 02.965 ArrayDeleteValue (EURUSD,D1) вариант Pastushak: Контрольная сумма = 495654091 ; элементов - 998983 ; время выполнения = 156457 микросекунд
2018.11 . 1219 : 50 : 02.969 ArrayDeleteValue (EURUSD,D1) вариант Korotky: Контрольная сумма = 495654091 ; элементов - 998983 ; время выполнения = 2319 микросекунд
2018.11 . 1219 : 50 : 02.972 ArrayDeleteValue (EURUSD,D1) вариант Fedoseev: Контрольная сумма = 495654091 ; элементов - 998983 ; время выполнения = 1810 микросекунд
2018.11 . 1219 : 50 : 02.974 ArrayDeleteValue (EURUSD,D1) вариант Semko: Контрольная сумма = 495654091 ; элементов - 998983 ; время выполнения = 785 микросекунд
주요 작업은 주어진 값에서 배열을 지우는 것입니다.
이것은 주요 문제가 아닐 수 있습니다. 이 어레이에서 수집된 것은 무엇이며 어떻게 사용됩니까?
글쎄, 심각하지 않습니다. 이 작은 문제를 해결하기 위해 코끼리를 끌어들이려면 STL::remove(array, value)를 언급하겠습니다.
이것은 매우 심각하고 근본적인 것입니다. MQL은 장황합니다. 공포에.
필터 (TS에는 필터링), 맵 (디스플레이), 접기 (컨볼루션, 합계)와 같은 기본 연산자
의문의 여지 없이 즉시 구현되어야 합니다. 그리고 최적화하십시오.
이것은 매우 심각하고 근본적인 것입니다. MQL은 장황합니다. 공포에.
필터 (TS에는 필터링), 맵 (디스플레이), 접기 (컨볼루션, 합계)와 같은 기본 연산자
의문의 여지 없이 즉시 구현되어야 합니다. 그리고 최적화하십시오.
요점은 작은 작업에 대해 그러한 지방("기본") 의존성을 끌어내는 것은 넌센스라는 것입니다. 모든 것을 똑똑한 방법으로 작성하고 전체 프로젝트 를 리팩터링하면 물론이지만 이것이 원래 질문의 본질이 아닙니다.
거래, 자동 거래 시스템 및 거래 전략 테스트에 관한 포럼
주어진 요소의 배열 지우기
드미트리 페도세프 , 2018.11.12 23:05
이것은 일종의 수치입니다 ... ©
1. 이중 유형의 변수를 ==를 통해 비교하려면 comme il faut가 아니라 온화하게 표현합니다.
2. 코드의 복잡성은 O(n^2)인 반면 정렬되지 않은 입력 시퀀스가 있는 주어진 문제에 대한 최악의 복잡성은 O(n)이어야 합니다.
3. 함수의 실제 사용에서는 반환된 배열에 포함된 실제 값의 수를 결정할 수 없기 때문에 코드가 작동하지 않습니다.
실행 결과:
잘못된 값은 배열에서 제거되지 않은 빨간색으로 강조 표시됩니다.
이것은 일종의 수치입니다 ... ©
1. 이중 유형의 변수를 ==를 통해 비교하려면 comme il faut가 아니라 온화하게 표현합니다.
2. 코드의 복잡성은 O(n^2)인 반면 정렬되지 않은 입력 시퀀스가 있는 주어진 문제에 대한 최악의 복잡성은 O(n)이어야 합니다.
3. 함수의 실제 사용에서는 반환된 배열에 포함된 실제 값의 수를 결정할 수 없기 때문에 코드가 작동하지 않습니다.
실행 결과:
잘못된 값은 배열에서 제거되지 않은 빨간색으로 강조 표시됩니다.
주블릭? 순리에 맡기다. 이중 변수를 비교하는 것은 비교 전에 평가되지 않는 경우 매우 중요합니다.
재료를 배우십시오. 부끄러움이 무엇입니까?
이것은 일종의 수치입니다 ... ©
1. 이중 유형의 변수를 ==를 통해 비교하려면 comme il faut가 아니라 온화하게 표현합니다.
2. 코드의 복잡성은 O(n^2)인 반면 정렬되지 않은 입력 시퀀스가 있는 주어진 문제에 대한 최악의 복잡성은 O(n)이어야 합니다.
3. 함수의 실제 사용에서는 반환된 배열에 포함된 실제 값의 수를 결정할 수 없기 때문에 코드가 작동하지 않습니다.
실행 결과:
잘못된 값은 배열에서 제거되지 않은 빨간색으로 강조 표시됩니다.
말도 안되는 소리 하지 마세요. 당신의 실수를 설명하거나 스스로 추측합니까? 전혀 어렵지 않아요...
3점 - 3개의 목장. 하지만, 아니요, 단지 두 개의 목장.
ps 하지만 난 당신을 믿습니다
ps2 함수를 올바르게 사용하면 다음과 같은 결과가 나타납니다.
그게 낫다:
그게 낫다:
Dmitry, 화가 - v - 또한 배열입니다.
그리고 일반적으로 이 모든 것은 완전히 넌센스입니다.
Dmitry, 화가 - v - 또한 배열입니다.
그리고 일반적으로 이 모든 것은 완전히 넌센스입니다.
v가 배열이면 문제가 되지 않습니다. 그리고 그것이 넌센스라는 사실 - 오히려 그렇습니다. 이 문제를 해결할 필요가 없었습니다.
글쎄, 속도면에서 그러한 술 경쟁이 이미 갔다면 나는 내 자신의 버전을 제공 할 것입니다.
모든 옵션에 대한 테스트 스크립트를 작성했습니다.
다음은 누구입니까? :))다음은 1,000,000개 요소(약 1000개 추가 값)의 배열에 대한 결과입니다.
피터, 와...