Array, Collection или Dictionary

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
SSecurity
Служба безопасности
Аватара пользователя
 
Сообщения: 1283
Зарегистрирован: 19.08.2003 (Вт) 1:11
Откуда: Россия, Мурманск

Array, Collection или Dictionary

Сообщение SSecurity » 22.08.2007 (Ср) 18:27

Всем привет!

У меня есть необходимость на основе 4 параметров расчитывать ещё 6
т.е. 4 исходных + 6 производных, причем 4 из 6 производных зависят от предыдущих значений этого параметра.

1. Переменная1
2. Переменная2
3. Переменная3
4. Переменная4
5. Переменная1-Переменная4
6. Переменная2-Переменная3
7. Ср. знач. Параметра5 за последние N значений
8. Ср. знач. Параметра6 за последние N значений
9. Ср. квадрат. откл. Параметра5 за последние N значений
10. Ср. квадрат. откл. Параметра6 за последние N значений

Иными словами мне нужно помнить N от 0 до 150 предыдущих значений, чтобы вести расчеты.

пробовал для простоты решения делать 10 массивов от 0 до 20000
и переменной индикатором текущего положения, 20000 - это чтобы изредко (раз в 6-7 часов перекидывать N элементов из конца массива в начало и сбрасывать положение "курсора") на основе которой я мог выяснить какие именно значения нужно выбирать.
20000 х 10 = 200000 Long элементов

сейчас сделал массив из 10 коллекций ... + массив 10 сумм
в коллекциях до N элементов .... добавляя очередной удаляю первый и если необходимо пересчитываю минимумы максимумы, хотя среднее квадратичное требует повторного перебора всех N элементов.

Вопрос такой ... что эффективнее всего использовать Массивы, коллекции или словари?

С Уважением,
Сергей
Программист - это маленький Бог, а все его ошибки - это самостоятельные творения:)
Так задумано:)

udpn
Обычный пользователь
Обычный пользователь
 
Сообщения: 51
Зарегистрирован: 24.07.2007 (Вт) 11:43

Сообщение udpn » 22.08.2007 (Ср) 19:16

Я считаю, нужны массивы, ибо коллекции жручие и ускоряют работу только при выборке каких-нибудь особых элементов, тебе же, как я понял, необходимы только последние элементы или все сразу. Не очень ясно, что есть словари.

P.S. Попытайся выражать задачу более алгоритмически
Не ищите смысла там, где его не ложили (c) проф. В.В. Горяйнов

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 22.08.2007 (Ср) 19:21

Я бы очередь написал. Она тут идеологически очень хорошо подходит.
Изображение

SSecurity
Служба безопасности
Аватара пользователя
 
Сообщения: 1283
Зарегистрирован: 19.08.2003 (Вт) 1:11
Откуда: Россия, Мурманск

Сообщение SSecurity » 22.08.2007 (Ср) 19:58

udpn Dictionary - объект из Runtime.Scripting что-то типа того :)))
как колекция, но проверяется существование объекта и доступ по ключу.

tyomitch и как её реализовать?

С Уважением,
Сергей
Программист - это маленький Бог, а все его ошибки - это самостоятельные творения:)
Так задумано:)

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 22.08.2007 (Ср) 20:02

Массив и два индекса, головы и хвоста.
Добавляя элемент, сдвигаешь хвост; забирая элемент -- голову.
Изображение

SSecurity
Служба безопасности
Аватара пользователя
 
Сообщения: 1283
Зарегистрирован: 19.08.2003 (Вт) 1:11
Откуда: Россия, Мурманск

Сообщение SSecurity » 22.08.2007 (Ср) 20:16

т.е. ты за вариант 10 массивов по 20000, я правильно понял?
Программист - это маленький Бог, а все его ошибки - это самостоятельные творения:)
Так задумано:)

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 22.08.2007 (Ср) 20:56

Нет, я за вариант 4 массива по 150. Зачем хранить вычисляемые значения?
Изображение

SSecurity
Служба безопасности
Аватара пользователя
 
Сообщения: 1283
Зарегистрирован: 19.08.2003 (Вт) 1:11
Откуда: Россия, Мурманск

Сообщение SSecurity » 22.08.2007 (Ср) 22:26

Собственно пользователь сам выбирает период - поэтому он не известен.
Специфика средних и среднего квадратичного требует знания предыдущего значения ...
плюс иногда могут потребоваться предыдущие значение параметров 1 - 4.

данные обновляются от 1 до 3 раз в секунду ... сдвигать массивы удалением первого значения ... с переиндексацией остального массива - не умею :))) тока если циклом сдвигать значения :) но это на время будет влиять, а здесь оно очень важно ... кроме этих вычислений ещё куча процессов должно проходить :)))
Программист - это маленький Бог, а все его ошибки - это самостоятельные творения:)
Так задумано:)

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 22.08.2007 (Ср) 23:21

Блин, "перендексация" -- это (индекс_головы + нужный_индекс) Mod длина_массива
Никакой ракетной науки.
Изображение

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Сообщение Хакер » 22.08.2007 (Ср) 23:25

udpn Dictionary - объект из Runtime.Scripting что-то типа того ))

Почти нет.
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

SSecurity
Служба безопасности
Аватара пользователя
 
Сообщения: 1283
Зарегистрирован: 19.08.2003 (Вт) 1:11
Откуда: Россия, Мурманск

Сообщение SSecurity » 23.08.2007 (Чт) 8:12

tyomitch да, и вправду, "ракетной науки" тут нет ...
Все просто:)

СПасибо всем большое, пойду переделаю :)

С Уважением,
Сергей
Программист - это маленький Бог, а все его ошибки - это самостоятельные творения:)
Так задумано:)


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: Majestic-12 [Bot], SemrushBot, Yandex-бот и гости: 85

    TopList