Форум программистов, компьютерный форум, киберфорум
Наши страницы

C# для начинающих

Войти
Регистрация
Восстановить пароль
 
Nomana
26 / 27 / 12
Регистрация: 17.05.2016
Сообщений: 90
Завершенные тесты: 1
#1

Найти хотя бы одно совпадение в двух массивах - C#

17.05.2016, 06:03. Просмотров 359. Ответов 7
Метки нет (Все метки)

Всем привет! Имеется следующий вопрос:

Есть 2 заполненных массива (mass1 и mass2). Нужно произвести проверку, встречается ли элементы mass1 в mass2 хотя бы один раз. Если нет - выводить сообщение, в каком индексе mass1 не нашлось совпадений.


Вот так вроде бы работает. Но хотелось бы услышать мнение, как еще лучше это можно реализовать.
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
MassMessage = new string[i];
for(i = 0; i < mass1.Length; i++)
{
    unique1 = true;
    for(j = 0; j < mass2.Length; j++)
    {
        if  (mass1[i] == mass2[j])
        {
            unique1 = false;
            break;          
        }
    }
    if (unique1)
    {       
        if (mass1[i] != "")
        {
        message04 = "В массиве 1 индекс " + (i+1) + " не совпадает со значениями массива 2.";
        ErrorList.Add(new ErrorItem(true, message04));  
        k = 1;  
        }           
    }
}
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
17.05.2016, 06:03
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Найти хотя бы одно совпадение в двух массивах (C#):

Сравнение двух текстовых переменных и вывод их разницы в виде текста что отличается в двух массивах - C#
Есть две текстовых переменных типа string. Необходимо вывести в третью переменную, разницу этих двух переменных т.е. первая переменная =...

Сравнение двух списков на совпадение фамилий - C#
Имеются два списка (А и В) фамилий в двух разных файлах Excel, задача состоит в следующем; -необходимо найти различия между этими...

Как ускорить процесс поиска совпадение в двух списках? - C#
Есть два файла. Считываю из них оба значения в списки. Хочу взять уникальные значения из обоих списков, однако процесс поиска и сравнения...

Сравнить каждый элемент с каждым, если есть совпадение, то соединить всю строку, в которой найдено совпадение - C#
Доброго времени суток! Есть два массива строк разного размера (элементы массива разделены запятой). Необходимо сравнить каждый элемент с...

Имеется ли среди чисел a,b,c хотя бы одно четное - C#
Определите,имеется ли среди чисел a,b,c хотя бы одно четное.

Поиск совпадений в двух массивах - C#
Добрый день задача тривиальная. Нужно сравнить два массива и удалить из одного из них все совпадения. Потому хотелось бы спросить. Есть...

7
Hares
39 / 36 / 16
Регистрация: 08.05.2016
Сообщений: 119
Завершенные тесты: 1
17.05.2016, 08:45 #2
Подключите System.Linq и тогда можно будет написать в таком виде:
Кликните здесь для просмотра всего текста
C#
1
2
3
4
5
6
7
8
9
10
MassMessage = new string[i];
for(i = 0; i < mass1.Length; i++)
{
    if (mass1[i] != "" && !mass2.Contains(mass1[i]))
    {       
        message04 = "В массиве 1 индекс " + (i+1) + " не совпадает со значениями массива 2.";
        ErrorList.Add(new ErrorItem(true, message04));
        k = 1;           
    }
}
0
Storm23
Эксперт .NETАвтор FAQ
5437 / 3294 / 1003
Регистрация: 11.01.2015
Сообщений: 4,366
Записей в блоге: 27
17.05.2016, 09:25 #3
Nomana, Используйте Hashset<>. В него нужно предварительно занести значения из второго массива, а затем использовать метод Contains.
Быстродействие вашего алгоритма - O(n^2), а с хешем будет O(n).
0
diadiavova
1843 / 979 / 271
Регистрация: 11.04.2015
Сообщений: 1,815
Записей в блоге: 31
17.05.2016, 09:50 #4
Лучший ответ Сообщение было отмечено автором темы, экспертом или модератором как ответ
Цитата Сообщение от Hares Посмотреть сообщение
Подключите System.Linq
Согласен, но только я бы сделал так
C#
1
var ErrorList = mass1.Select((a, i) => mass2.Contains(a) ? -1 : i).Where(i => i != -1).Select(i=> $"В массиве 1 индекс {i} не совпадает со значениями массива 2.");
0
Hares
39 / 36 / 16
Регистрация: 08.05.2016
Сообщений: 119
Завершенные тесты: 1
17.05.2016, 15:12 #5
Nomana, Используйте Hashset<>. В него нужно предварительно занести значения из второго массива, а затем использовать метод Contains.Быстродействие вашего алгоритма - O(n^2), а с хешем будет O(n)
Да, но в этом случае невозможно наличие дублей во втором массиве
0
Storm23
Эксперт .NETАвтор FAQ
5437 / 3294 / 1003
Регистрация: 11.01.2015
Сообщений: 4,366
Записей в блоге: 27
17.05.2016, 17:18 #6
Цитата Сообщение от Hares Посмотреть сообщение
Да, но в этом случае невозможно наличие дублей во втором массиве
Ну так дубли и не нужны, читаем внимательно условие задачи:
Нужно произвести проверку, встречается ли элементы mass1 в mass2 хотя бы один раз.
Зачем нам дубли в mass2 ?

Я к тому, не возникнет ли ошибки при создании/добавлении?
Нет, не возникнет. В Hashset можно добавлять один и тот же элемент множество раз.
0
Hares
39 / 36 / 16
Регистрация: 08.05.2016
Сообщений: 119
Завершенные тесты: 1
17.05.2016, 17:19 #7
Я к тому, не возникнет ли ошибки при создании/добавлении?
0
Nomana
26 / 27 / 12
Регистрация: 17.05.2016
Сообщений: 90
Завершенные тесты: 1
18.05.2016, 02:30  [ТС] #8
Спасибо большое Всем!
0
18.05.2016, 02:30
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
18.05.2016, 02:30
Привет! Вот еще темы с ответами:

Проверить, существует ли в массиве из n целых чисел хотя бы одно число кратное 7 - C#
Проверить, существует ли в массиве из n целых чисел хотя бы одно число кратное 7. Если ДА, то увеличить максимальное значение в исходном...

Проверить, существует ли в массиве из n целых чисел хотя бы одно число кратное 7 - C#
Проверить, существует ли в массиве из n целых чисел хотя бы одно число кратное 7. Если ДА, то увеличить максимальное значение в исходном...

Поиск уникальных значений в двух массивах - C#
Доброе время суток. Задача. Есть 2 массива 1,2,3,4,5 4,5,6,7,8 Нужно сравнить 1 массив с 2 и вывести уникальные. Скажу...

Найти совпадение. - C#
Есть одно изображение маленького размера (допустим 25х25 пикселей) Есть одно большое изображение. Нужно определить, присутствует ли...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.