|
17 / 9 / 2
Регистрация: 18.01.2014
Сообщений: 155
|
|
Сравнение массивов02.01.2016, 01:26. Показов 1448. Ответов 13
Метки нет (Все метки)
Здравствуйте.
Есть две коллекции однотипных объектов, объекты в обоих коллекциях могут повторяться по критериям сравнения. Задача: Для каждого объекта из обоих коллекций найти по определенным критериям равный объект и записать это в результат. Пример: Коллекция 1: А В С А Коллекция 2: С А А Е Результат: (в скобках указан для простоты порядковый номер элемента из соответствующей коллекции) Коллекция 1: А(2,3) В() С(1) А(2,3) Коллекция 2: С(3) А(1,4) А(1,4) Е() Хочется использовать какой-то более интересный алгоритм, чем тупой перебор сравнения каждого с каждым. Посоветуете?
0
|
|
| 02.01.2016, 01:26 | |
|
Ответы с готовыми решениями:
13
Сравнение двух массивов с удалением и дополнением Сравнение двух массивов без вложенных циклов Сравнение харктеристик Массивов, Списков и Хэш-таблиц |
|
Модератор
3136 / 2283 / 469
Регистрация: 26.03.2015
Сообщений: 8,887
|
|
| 02.01.2016, 04:05 | |
|
Для каждой из коллекций заполняем словарь "ключ"-"список позиций", где ключ - критерии сравнения.
Для каждого из элементов первой коллекции выводим содержимое второго словаря, и наоборот.
0
|
|
|
17 / 9 / 2
Регистрация: 18.01.2014
Сообщений: 155
|
||
| 02.01.2016, 18:33 [ТС] | ||
![]() Интересный вариант. Я подумаю над этим. Из пришедших сразу в голову минусов данного алгоритма: Если коллекции очень большие и ключ составляет почти полностью содержимое полей объекта, то получается очень ресурсоемко по памяти. По сути, мы будем иметь не две коллекции, а четыре, если пересечений не очень много.
0
|
||
|
Модератор
3136 / 2283 / 469
Регистрация: 26.03.2015
Сообщений: 8,887
|
|
| 03.01.2016, 03:29 | |
|
0
|
|
|
17 / 9 / 2
Регистрация: 18.01.2014
Сообщений: 155
|
||
| 03.01.2016, 04:59 [ТС] | ||
![]() Я же сказал, что подумаю. Скорее всего, реализую Ваш вариант. Спасибо за идею! ![]() Действительно, чего на спичках то экономить?... Что мне еще нравится, что можно обойтись одним словарем, привязав к ключу значения обоих коллекций. думаю, это как раз будет то, что нужно.
0
|
||
|
17 / 9 / 2
Регистрация: 18.01.2014
Сообщений: 155
|
|
| 11.01.2016, 00:18 [ТС] | |
|
0
|
|
| 11.01.2016, 10:44 | |
|
taancer
Задаем массив А() и заполняем его так. Пример А(1) здесь может быть только символ А А(2) здесь ... только символ В А(3) ... только С И так далее Итак у нас есть два массива A() и B(). Мы в цикле проверяем Если А(i)=B(i), то это общий элемент принадлежащий обоим множествам (заданным в виде массивов). Этот элемент автоматически идет в массив C(i). Иными словами массив С() будет содержать общие элементы А() и В(). И далее вам нужно будет лишь смотреть на С() Если элемент не принадлежит С() то его и рассматривать не надо А если принадлежит, то он точно входит в коллекцию. PS. Язык С# мне неизвестен и я не могу предложить на нем код.
0
|
|
|
Модератор
3136 / 2283 / 469
Регистрация: 26.03.2015
Сообщений: 8,887
|
||||||||
| 11.01.2016, 10:53 | ||||||||
|
Добавлено через 1 минуту
0
|
||||||||
| 11.01.2016, 11:33 | |
|
Shamil1
А если параллельно провести подсчет? Или овчинка выделки не стоит? Мое предложение удобно тем, что если общих элементов мало, то оно позволяет сильно сократить перебор. Есть еще вопрос А нельзя ли для этой задачи использовать строку? И лишние символы можно выбросить и сохранить позиции существующих и их количество?
0
|
|
|
Модератор
3136 / 2283 / 469
Регистрация: 26.03.2015
Сообщений: 8,887
|
|||
| 11.01.2016, 11:52 | |||
|
0
|
|||
|
17 / 9 / 2
Регистрация: 18.01.2014
Сообщений: 155
|
|||||
| 11.01.2016, 14:09 [ТС] | |||||
но спасибо за подсказку, буду знать.Очень не хочется так делать. Хотелось бы сделать декларативно - обработкой данных через запросы. Но для того, чтобы эту коллекцию добавить, нужно сначала найти ее элементы. Я хочу это сделать через LINQ Но вот механизм выборки пока что сообразить не могу. Поэтому и спросил про алгоритм.
0
|
|||||
|
Модератор
3136 / 2283 / 469
Регистрация: 26.03.2015
Сообщений: 8,887
|
|||||||||||||
| 11.01.2016, 15:04 | |||||||||||||
1
|
|||||||||||||
| 11.01.2016, 15:04 | |
|
Помогаю со студенческими работами здесь
14
Сравнение массивов
Сравнение массивов
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Доступность команды формы по условию
Maks 07.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2.
Задача: сделать доступной кнопку (команда формы "ЗавершитьСписание") при. . .
|
Уведомление о неверно выбранном значении справочника
Maks 06.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "НарядПутевка", разработанного в конфигурации КА2.
Задача: уведомлять пользователя, если в документе выбран неверный склад. . .
|
Установка Qt Creator для C и C++: ставим среду, CMake и MinGW без фреймворка Qt
8Observer8 05.04.2026
Среду разработки Qt Creator можно установить без фреймворка Qt. Есть отдельный репозиторий для этой среды: https:/ / github. com/ qt-creator/ qt-creator, где можно скачать установщик, на вкладке Releases:. . .
|
AkelPad-скрипты, структуры, и немного лирики..
testuser2 05.04.2026
Такая программа, как AkelPad существует уже давно, и также давно существуют скрипты под нее. Тем не менее, прога живет, периодически что-то не спеша дополняется, улучшается. Что меня в первую очередь. . .
|
|
Отображение реквизитов в документе по условию и контроль их заполнения
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеСпецтехники", разработанного в конфигурации КА2.
Данный документ берёт данные из другого нетипового документа. . .
|
Фото всей Земли с борта корабля Orion миссии Artemis II
kumehtar 04.04.2026
Это первое подобное фото сделанное человеком за 50 лет. Снимок называют новым вариантом легендарной фотографии «The Blue Marble» 1972 года, сделанной с борта корабля «Аполлон-17». Новое фото. . .
|
Вывод диалогового окна перед закрытием, если документ не проведён
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2.
Задача: реализовать программный контроль на предмет проведения документа. . .
|
Программный контроль заполнения реквизитов табличной части документа
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2.
Задача:
1. Реализовать контроль заполнения реквизита. . .
|