Форум программистов
 
Регистрация на форуме тут, о проблемах пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail, а тут можно восстановить пароль.

Как купить рекламу на форуме


Вернуться   Форум программистов > .NET Frameworks (точка нет фреймворки) > C# (си шарп)
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме 40000 рублей в месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 11.07.2021, 19:40   #1
Poler
Новичок
Джуниор
 
Регистрация: 11.07.2021
Сообщений: 1
Сообщение ктото может помочь ускорить данный код?

Код:
            int k;
            int n = 0;
            int m = 0;
            int l = 0;
            List<int> A = new List<int> { };
            List<int> B = new List<int> { };
            List<int> C = new List<int> { };           
            List<int> D  = Console.ReadLine().Split().Select(int.Parse).ToList();

            // Заполняем первый массив до отрицательного числа
            while (l < D.Count)
            {
                k = D[l];
                l++;
                if (k < 0)
                {
                    break;
                }
                A.Add(k);
                n++;
            }
            // Заполняем второй массив до отрицательного числа
            while (l < D.Count)
            {
                k = D[l];
                l++;
                if (k < 0) break;
                B.Add(k);
                m++;
            }
            for (int i = 0; i < n; i++)
            {
                // Сравниваем очередной элемент первого массива с каждым элементом второго массива
                bool flag = false;
                for (int j = 0; j < m; j++)
                {
                    if (A[i] == B[j]) flag = true;
                }
                C.Add(flag ? 1 : 0);
            }
            C.Add(-1);
            for (int i = 0; i < C.Count-1; i++)
            {
                Console.Write(C[i].ToString() + " ");
            }
            Console.Write(C[C.Count-1]);

Последний раз редактировалось BDA; 11.07.2021 в 20:03.
Poler вне форума Ответить с цитированием
Старый 11.07.2021, 20:11   #2
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 6,223
По умолчанию

Как минимум, можно выходить из внутреннего цикла раньше:
Код:
if (A[i] == B[j]) {
    flag = true;
    break;
}
Вместо списка B использовать HashSet.
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )

Последний раз редактировалось BDA; 11.07.2021 в 20:50.
BDA на форуме Ответить с цитированием
Ответ
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
swift - данный storybord находится в main, но не может получить UITableView" Farida322393 Помощь студентам 0 27.06.2020 14:38
может кто может помочь написать программу наC++ Мираслава Помощь студентам 1 16.04.2017 16:41
Где и как скачать программу Delphi. Может кто нибудь может помочь мне - без скачивания из интернета. IZOPGRAM Общие вопросы Delphi 4 16.06.2012 17:12
Кто может помочь переделать существующий код, изменить буквы на КАМ Enf0s Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 0 04.05.2012 14:22
Нада описать код програми, кто может помочь очень буду благодарен!!! Programmer20101 Помощь студентам 0 12.05.2010 20:15