Гость
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Класс для поиска десятичных данных по нескольким полям / 25 сообщений из 37, страница 1 из 2
15.09.2015, 04:53
    #39051349
breee3
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Класс для поиска десятичных данных по нескольким полям
У меня есть таблица. Это справочник соответствия некоторых величин при физическом процессе. Всего пять полей с типом Decimal и десять тысяч строк. Какой класс .net лучше использовать для хранения такой таблицы?. Интересен поиск строки по каждому из полей. Если было два поля, то вариантов масса: Dictionary, Hashtable и др. Для установления соответствия между пятью полями понадобилось бы 10 экземпляров вышеупомянутых классов, это если в Value будет просто значение другого поля. Ну или хотя бы пять, если в Value будет храниться строка (кортеж?) из остальных полей.
Другая проблема, что значения по которому я буду искать может не оказаться в таблице. Например, я ищу 36.8, а в таблице есть только 36.6 и 40.0. В таком случае, мне нужно получить строку с ближайшим значением в любую сторону. В моём текущем случае мне не нужно интерполировать значение -- таблица и так очень точная, а если бы пришлось то нужна бы была не одна строка, а несколько в обе стороны.
Я конечно, могу велосипед придумать на базе пяти Dictionary (или даже одного DataTable) и циклов для изменения значения поиска при неудачи... Но боюсь он будет ездить медленно.
...
Рейтинг: 0 / 0
15.09.2015, 07:42
    #39051380
skyANA
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Класс для поиска десятичных данных по нескольким полям
...
Рейтинг: 0 / 0
15.09.2015, 07:48
    #39051381
skyANA
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Класс для поиска десятичных данных по нескольким полям
А вообще если "Интересен поиск строки по каждому из полей", то чем поиск по самой таблице не устравивает?
...
Рейтинг: 0 / 0
15.09.2015, 07:48
    #39051382
breee3
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Класс для поиска десятичных данных по нескольким полям
2 skyANA
Вы считаете, что лучше использовать именно двумерные массивы, а не допустим массивы массивов? А они оптимизированы для поиска по десятичным значениям?
...
Рейтинг: 0 / 0
15.09.2015, 07:49
    #39051384
breee3
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Класс для поиска десятичных данных по нескольким полям
по самой таблице DataTable ? Я переживаю за скорость, она подойдёт?
...
Рейтинг: 0 / 0
15.09.2015, 07:51
    #39051385
breee3
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Класс для поиска десятичных данных по нескольким полям
И собственно ещё сильней напрягает реализация поиска по неточному значению( по тому, которого нет в таблице)
...
Рейтинг: 0 / 0
15.09.2015, 07:52
    #39051386
skyANA
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Класс для поиска десятичных данных по нескольким полям
breee3по самой таблице DataTable ? Я переживаю за скорость, она подойдёт?Вы написали: "У меня есть таблица". Где она есть? Почему прямо по ней не ищете? Запросом.
...
Рейтинг: 0 / 0
15.09.2015, 07:53
    #39051388
breee3
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Класс для поиска десятичных данных по нескольким полям
ну пока она есть в текстовом файле. планирую вообще её в код запихать. С БД не охото завязываться
...
Рейтинг: 0 / 0
15.09.2015, 07:55
    #39051389
kmaw
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Класс для поиска десятичных данных по нескольким полям
breee3С БД не охото завязываться

тогда только хардкор
...
Рейтинг: 0 / 0
15.09.2015, 07:56
    #39051390
skyANA
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Класс для поиска десятичных данных по нескольким полям
breee3, а что за данные, некий временной ряд? Почему не хотите завязываться к примеру с Column store, или TimeSeries store?
...
Рейтинг: 0 / 0
15.09.2015, 07:58
    #39051392
skyANA
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Класс для поиска десятичных данных по нескольким полям
breee3 2 skyANA
Вы считаете, что лучше использовать именно двумерные массивы, а не допустим массивы массивов?У Вас фиксированное количество полей в строке.
...
Рейтинг: 0 / 0
15.09.2015, 07:59
    #39051393
breee3
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Класс для поиска десятичных данных по нескольким полям
skyANAColumn store, или TimeSeries store? пошёл гуглить...
...
Рейтинг: 0 / 0
15.09.2015, 08:01
    #39051394
skyANA
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Класс для поиска десятичных данных по нескольким полям
breee3skyANAColumn store, или TimeSeries store? пошёл гуглить...:)

Погуглите заодно matlab и язык R. Лично у меня возник вопрос: а зачем тут вообще .net?
...
Рейтинг: 0 / 0
15.09.2015, 08:01
    #39051395
breee3
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Класс для поиска десятичных данных по нескольким полям
з.ы. вообще я думал, что 10000 строк, не тот объем чтоб средств языка не хватило...
...
Рейтинг: 0 / 0
15.09.2015, 08:05
    #39051400
breee3
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Класс для поиска десятичных данных по нескольким полям
зачем тут вообще .net? ну морды последнее время на нём пишу, вот и решил на нём... вообще хочу написать приложение для своего хобби и делиться с коллегами по увлечению. А вот осваивать новые для себя языки (R и т.д.)...
...
Рейтинг: 0 / 0
15.09.2015, 08:37
    #39051415
skyANA
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Класс для поиска десятичных данных по нескольким полям
breee3з.ы. вообще я думал, что 10000 строк, не тот объем чтоб средств языка не хватило...10000 строк - это не тот объём, когда сразу нужно думать об оптимизированном поиске.

Вот сколько у Вас простой перебор по многомерному массиву занимает? :)
...
Рейтинг: 0 / 0
15.09.2015, 08:38
    #39051417
skyANA
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Класс для поиска десятичных данных по нескольким полям
breee3зачем тут вообще .net? ну морды последнее время на нём пишу, вот и решил на нём... вообще хочу написать приложение для своего хобби и делиться с коллегами по увлечению. А вот осваивать новые для себя языки (R и т.д.)...Морду для чего Вы хотите написать? Что за хобби? Анализ временных рядов? :)
...
Рейтинг: 0 / 0
15.09.2015, 08:47
    #39051423
breee3
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Класс для поиска десятичных данных по нескольким полям
skyANA[10000 строк - это не тот объём, когда сразу нужно думать об оптимизированном поиске. А вот это может быть веско! Но ведь данные тоже в циклах будут дёргаться...

Хобби - изготовления алкогольных напитков в домашних условиях. Программа - возможность выполнять разные нетривиальные расчеты. Таблица - соответствие концентраций (объёмных, массовых, молярных) этанола в кипящей жидкости и дистилляте и температуры кипения.
...
Рейтинг: 0 / 0
15.09.2015, 09:09
    #39051436
skyANA
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Класс для поиска десятичных данных по нескольким полям
breee3skyANA[10000 строк - это не тот объём, когда сразу нужно думать об оптимизированном поиске. А вот это может быть веско! Но ведь данные тоже в циклах будут дёргаться...Вы таки для начала замерьте свои циклы, прежде чем переживать :)

breee3Хобби - изготовления алкогольных напитков в домашних условиях. Программа - возможность выполнять разные нетривиальные расчеты. Таблица - соответствие концентраций (объёмных, массовых, молярных) этанола в кипящей жидкости и дистилляте и температуры кипения.Для одного напитка 10000 строк?

P.S.: классы, заточенные именно под Ваши "нетривиальные расчеты" вряд-ли существуют. Возьмите многомерный массив, да напишите вокруг него всё.
...
Рейтинг: 0 / 0
15.09.2015, 09:12
    #39051437
skyANA
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Класс для поиска десятичных данных по нескольким полям
P.P.S.: нетривиальные не значит сложные. Так что не стоит бояться.
...
Рейтинг: 0 / 0
15.09.2015, 09:22
    #39051446
breee3
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Класс для поиска десятичных данных по нескольким полям
skyANA напишите вокруг него всё. это само собой :) попробую вообщем на DataTable всё таки, там можно какие-то условия накладывать. А уж если, что потом буду оптимизировать. Вы меня успокоили, спасибо!
...
Рейтинг: 0 / 0
15.09.2015, 09:29
    #39051456
Gluck_13
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Класс для поиска десятичных данных по нескольким полям
Если не предполагается внесение изменений в таблицу в процессе работы (статический справочник), то я бы представил строку справочника в виде struct, сложил бы в его в массив, и построил бы 5 индексных массивов для поиска, каждый из которых представляет собой список индексов основного массива, отсортированных по возрастанию того или иного поля.
Производим обыкновенный бинарный поиск по индексному массиву, если не нашли строгое соответствие, то проверяем найденное и окрестные значения на минимальное отклонение от искомого.
Можно исходный массив сразу отсортировать по одному из полей, тогда индексных понадобится на один меньше.
...
Рейтинг: 0 / 0
15.09.2015, 09:36
    #39051468
breee3
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Класс для поиска десятичных данных по нескольким полям
2 Gluck_13 это уже интереснее! вот только не понял как бинарный поиск должен работать... можно "на кошечках"?
...
Рейтинг: 0 / 0
15.09.2015, 09:41
    #39051477
skyANA
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Класс для поиска десятичных данных по нескольким полям
breee3, в .net уже реализован бинарный поиск по отсортированному массиву: Array.BinarySearch<T> .
...
Рейтинг: 0 / 0
15.09.2015, 09:46
    #39051481
skyANA
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Класс для поиска десятичных данных по нескольким полям
А вообще можно было уже консольное приложение накидать, где сгенирировать 5 колонок по 10000 значений в каждой, или 10000 строк по 5 значений.
И убедиться в том, что рано думать о быстрых сортировках, индексах и бинарном поиске :)
...
Рейтинг: 0 / 0
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Класс для поиска десятичных данных по нескольким полям / 25 сообщений из 37, страница 1 из 2
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]