как долго будет считать такой цикл Erray [1051200][3] - страница 2

 
Vitya >>:
вот такая матрица поидее

Был не прав, всё намного дольше

 
Я понимаю, что для Вас это дело принципа :) . Но существует и альтернативный подход.
Ищете максимум и минимум Erray[i,1], заводите массив распределения соответствующего размера, затем ещё раз проходите Erray увеличивая элемент распределения по адресу Erray[i,1]-Min(Erray[i,1]) на 1.
Двойной цикл не нужен.
 
А зачем вам Erray типа double
Тиковый объем вроде как int
Уйдете от преобразования double = int - int
Может если это поправить будет еще быстрее ?
 
olyakish >>:
А зачем вам Erray типа double
Тиковый объем вроде как int
Уйдете от преобразования double = int - int
Может если это поправить будет еще быстрее ?

да это тоже мой касяк, исправлю
спасибо.

 
Candid >>:
Я понимаю, что для Вас это дело принципа :) . Но существует и альтернативный подход.
Ищете максимум и минимум Erray[i,1], заводите массив распределения соответствующего размера, затем ещё раз проходите Erray увеличивая элемент распределения по адресу Erray[i,1]-Min(Erray[i,1]) на 1.
Двойной цикл не нужен.

Спасибо, вот только не соображу пока как это сделать и какой конечный результат будет. Будет ли такой какой изначально задумывался.
Из всей выборки отсортировать по колличеству повторений.
Надо было математику учить ))

 
Vitya >>:

Спасибо, вот только не соображу пока как это сделать и какой конечный результат будет. Будет ли такой какой изначально задумывался.
Из всей выборки отсортировать по колличеству повторений.
Надо было математику учить ))

Если нужна статистика повторений, то нужно её и подсчитать. То есть считать не для каждой точки истории, а для каждого встречавшегося в истории значения Volume[1]-Volume[2].

 
Candid >>:

Если нужна статистика повторений, то нужно её и подсчитать. То есть считать не для каждой точки истории, а для каждого встречавшегося в истории значения Volume[1]-Volume[2].

Так это же вроде как и делаю

    for(int i=0;i<n;i++)
       { 
         Erray[i,0]=i;
         Erray[i,1]=Volume[1+i]-Volume[2+i];
       }
Для каждого бара вглубь истории на 2 года считается значение Volume[1]-Volume[2]. Затем всё в файл. У нас есть 1051200 строк каждой присвоено своё значение. А вот как отсортировать по вашему методу, пока не понял )
Или я что-то не понимаю?
 
И что, за эти два года случилось 1051200 разных значений Volume[1]-Volume[2] ?
Сколько было разных значений?
 
не знаю, что и сказать. Про отклонения в 3000 тиков я никогда не слышал. Думаю 3000 вполне хватит.

int Erray[6000]; //количество попаданий
//int Mnog=MathPow(10.0,Digits());
for(int i=0;i<n;i++)
       { 
         int j=(Volume[i]-Volume[1+i])+3000;
         Erray[j]++;
       }
 
Ну может ещё на всякий случай проверку границ перед обращением к массиву таки вставить :)
Причина обращения: