|
17 / 17 / 6
Регистрация: 11.11.2015
Сообщений: 146
|
||||||
Сравнение двух массивов без вложенных циклов29.11.2016, 13:20. Показов 9123. Ответов 62
Метки нет (Все метки)
Извиняюсь, что помещаю здесь этот вопрос, я сам по идее должен был догадаться, но никак не могу. Второй день гружусь, без толку
![]() Имеются два массива с числами(int), одного размера, скажем, в каждом массиве по 20 чисел, больше нуля. Например:
В данном случае это будет: array1[0] + array2[3] = 8 // 2 + 6 = 8 Стандартное решение подразумевает цикл в цикле, т.е. сложность алгоритма будет N*N, если за N мы берем размер массива. Меня попросили найти более простое решение, без вложенных циклов. Догадываюсь, что где-то в сети или в учебниках оно разжевано, но не могу найти. Всем 10х
0
|
||||||
| 29.11.2016, 13:20 | |
|
Ответы с готовыми решениями:
62
Сравнение двух массивов с удалением и дополнением Использование вложенных циклов и ветвлений при обработке массивов Обработка матриц Заполнение двумерного массива без вложенных циклов |
|
440 / 432 / 159
Регистрация: 21.05.2016
Сообщений: 1,338
|
|
| 29.11.2016, 13:57 | |
|
Предположу, что сначала нужно отсортировать второй массив - O(n log n), затем проходить по первому массиву - O(n), и искать бинарным поиском во втором массиве число x-array1[i], где x - заданное число - O(log n). Получаем временную сложность O(n log n) + O(n log n) = O(n log n)
0
|
|
|
17 / 17 / 6
Регистрация: 11.11.2015
Сообщений: 146
|
||||||||||||
| 29.11.2016, 15:28 [ТС] | ||||||||||||
Добавлено через 14 минут По условиям задачи нет проблем с использованием доп. памяти,(извиняюсь, что не сказал сразу) т.е. разрешается создавать временные массивы и т.д. Я вначале думал создать два новых массива, в которые занес бы разницу между контрольным числом и каждым значением, т.е.
0
|
||||||||||||
|
Модератор
3136 / 2283 / 469
Регистрация: 26.03.2015
Сообщений: 8,886
|
|
| 29.11.2016, 15:42 | |
|
0
|
|
|
17 / 17 / 6
Регистрация: 11.11.2015
Сообщений: 146
|
||
| 29.11.2016, 16:33 [ТС] | ||
Либо пускай это будет единственное совпадение, тогда задача облегчается, т.е. такой случай у нас только один.
0
|
||
|
Модератор
3136 / 2283 / 469
Регистрация: 26.03.2015
Сообщений: 8,886
|
|||||||
| 29.11.2016, 17:15 | |||||||
0
|
|||||||
|
17 / 17 / 6
Регистрация: 11.11.2015
Сообщений: 146
|
||
| 29.11.2016, 18:20 [ТС] | ||
0
|
||
|
1472 / 827 / 140
Регистрация: 12.10.2013
Сообщений: 5,456
|
|||
| 29.11.2016, 23:19 | |||
|
0
|
|||
|
17 / 17 / 6
Регистрация: 11.11.2015
Сообщений: 146
|
|
| 29.11.2016, 23:51 [ТС] | |
|
Возможно, я не точно выразился насчет "простого" решения. Подразумевалось уйти от сложности N*N к меньшей сложности. Намекнули, что есть какой-то фокус. И... вообще-то, меня спрашивали как программиста
![]() Не хочу вгонять никого в конфуз, если мне удастся добраться до этих людей, я раскручу их на ответ и выложу его здесь.
0
|
|
|
440 / 432 / 159
Регистрация: 21.05.2016
Сообщений: 1,338
|
|
| 30.11.2016, 01:13 | |
|
0
|
|
|
1472 / 827 / 140
Регистрация: 12.10.2013
Сообщений: 5,456
|
||
| 30.11.2016, 01:20 | ||
|
1)Может у данных есть закономерность? Построить их как 2 графика функции. X индекс, Y значение. Может второй массив это сдвиг или растяжение первого. По другому нереально… Или как то разложить форму функции первого массива на элементарные сигналы например синусоиды. Может второй и первый массив это одна и та же формула псевдослучайная последовательность только разные фазы( начальное число генератора). Если нет закона в данных то и нет способа не перебирать все. Можно размазывать суть N*N на подготовку данных.
0
|
||
|
440 / 432 / 159
Регистрация: 21.05.2016
Сообщений: 1,338
|
|||||||
| 30.11.2016, 02:43 | |||||||
|
Добавлено через 2 минуты
1
|
|||||||
|
17 / 17 / 6
Регистрация: 11.11.2015
Сообщений: 146
|
||
| 30.11.2016, 10:33 [ТС] | ||
0
|
||
|
Модератор
3136 / 2283 / 469
Регистрация: 26.03.2015
Сообщений: 8,886
|
|
| 30.11.2016, 10:55 | |
|
Можно вообще без циклов обойтись, если использовать рекурсию.
0
|
|
|
440 / 432 / 159
Регистрация: 21.05.2016
Сообщений: 1,338
|
||
| 30.11.2016, 11:20 | ||
|
0
|
||
|
1472 / 827 / 140
Регистрация: 12.10.2013
Сообщений: 5,456
|
|
| 30.11.2016, 12:29 | |
|
Если ответ начальный элемент первого массива и любой индекс второго то самый быстрый N*N, иначе сортировка очевидно сильно ускорит поиск.
Т.е. пока алгоритм поста 2 будет только сортировать массив алгоритм N*N уже даст ответ чисто по тактам процессора выиграет. Хотя в теории он медленней =). Если ответ будет в конце первого массива то N*N проиграет как любой брутофорс. Если в данных выявить закономерность то никакая сортировка массива не выиграет формуле в 1 строчку но это уже нечестно.
0
|
|
|
440 / 432 / 159
Регистрация: 21.05.2016
Сообщений: 1,338
|
||
| 30.11.2016, 12:38 | ||
|
0
|
||
|
17 / 17 / 6
Регистрация: 11.11.2015
Сообщений: 146
|
||
| 01.12.2016, 13:41 [ТС] | ||
0
|
||
| 01.12.2016, 13:41 | |
|
Помогаю со студенческими работами здесь
20
Вычислить сумму следующего ряда без вложенных циклов Сравнение данных в двух DataGridView с помощью циклов Круговая диаграмма без массивов и циклов Найти n-ое число Фибоначчи без массивов и циклов Перевернуть число без помощи массивов циклов Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
|
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
|
SDL3 для Web (WebAssembly): Сборка SDL3, Box2D, FreeType, SDL3_ttf, SDL3_mixer и SDL3_image из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual Studio. . . .
|
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога
Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
|
|
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование
. \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json>
Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом.
# Check if. . .
|
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так:
https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347
Основана на STM32F303RBT6.
На борту пять. . .
|
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
|
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу,
и светлой Луне.
В мире
покоя нет
и люди
не могут жить в тишине.
А жить им немного лет.
|