|
0 / 0 / 0
Регистрация: 26.10.2016
Сообщений: 8
|
||||||
Сформировать новую матрицу из данной, чтобы неотрицательные элементы каждого столбца располагались в начале столбца09.12.2017, 12:30. Показов 1295. Ответов 5
Метки нет (Все метки)
Помогите, пожалуйста, ошибки исправить
Дана квадратная матрица порядка n(n=5). Сформировать новую матрицу a из данной матрицы, таким образом чтобы неотрицательные элементы каждого столбца матрицы располагались в начале столбца.
0
|
||||||
| 09.12.2017, 12:30 | |
|
Ответы с готовыми решениями:
5
Вывести элементы K-го столбца данной матрицы. Получить новую матрицу умножением всех элементов данной на min Вычесть из каждого столбца матрицы максимальный элемент для каждого столбца, и результат вывести в матрицу |
|
Модератор
10422 / 5710 / 3401
Регистрация: 17.08.2012
Сообщений: 17,367
|
||||||
| 09.12.2017, 17:12 | ||||||
|
Исправил.
Вместо не очень удобной для данного случая сортировки выбором применил карманную сортировку, и, так как в данном случае требуется всего два кармана, столбец сортируется всего за 2 прохода: распихиваем элементы столбца по карманам, затем переписываем содержимое карманов на место столбца. Преимущество: быстрее отсортировать не удастся вообще любой известной в мире сортировкой, кроме, разве что, сортировки подсчётом, которой также требуется всего 2 прохода по массиву, однако, так как сортировка подсчётом является неустойчивой, будет потеряно взаимное расположение положительных и отрицательных элементов. Для сортировки подсчётом в данном случае требуется массив длиной в возможный диапазон значений элементов (в исправленной программе это будет 199 элементов), а для карманной сортировки - максимум два массива длиной в столбец, то есть, 10 элементов. Получается, что сортировка подсчётом в данном случае будет медленнее карманной. Недостаток: требуются дополнительные массивы. На самом деле, я применил один "двусторонний карман": используется один и тот же дополнительный массив c[1..m], неотрицательные элементы в него записываем с начала, отрицательные - с конца. Небольшое неудобство: при копировании элементов из карманов в столбец неотрицательные следует копировать в прямом порядке, отрицательные - в обратном. Можно неотрицательные копировать и в прямом порядке, если порядок их следования не важен, только вот программа практически не упростится, так что делать это смысла не имеет.
1
|
||||||
|
0 / 0 / 0
Регистрация: 26.10.2016
Сообщений: 8
|
|
| 09.12.2017, 17:57 [ТС] | |
|
отрицательные элементы все равно стоят в начале :с
Code Исходный массив: 15 78 -71 30 6 -12 63 -63 44 -23 -19 0 -65 88 10 -3 -85 -67 -12 6 -43 61 -26 84 20 Отсортированный массив: 15 78 -71 30 6 -12 63 -63 44 10 -19 0 -65 88 6 -3 61 -67 84 20 -43 -85 -26 -12 -23
0
|
|
|
Модератор
10422 / 5710 / 3401
Регистрация: 17.08.2012
Сообщений: 17,367
|
|
| 10.12.2017, 00:13 | |
|
Ох ты ж батюшки светы!
Викторияашлмп, даже и не знаю, что подумать... Ну откуда неотрицательным элементам взяться в начале 3 столбца, если их в 3 столбце просто-напросто нет!!! Ещё раз, может, так понятнее: ноль штук неотрицательных элементов 3 столбца располагаются в начале 3 столбца, после них идут пять штук отрицательных элементов 3 столбца. Что не так?
0
|
|
|
Модератор
10422 / 5710 / 3401
Регистрация: 17.08.2012
Сообщений: 17,367
|
||||||
| 12.12.2017, 01:53 | ||||||
|
Соблазн был очень велик: для данного случая вместо стандартного решения так и напрашивалась карманная сортировка. Средняя сложность O(n), устойчивая, реализация для данного случая вообще элементарная. Немножко памяти нужно, ну и ладно, немножко же.
Вообще, мысль была такая:
0
|
||||||
| 12.12.2017, 01:53 | |
|
Помогаю со студенческими работами здесь
6
Как сделать так, чтобы в конце записи каждого столбца, выводилось сумма столбца?
Разделить элементы каждого столбца заданной матрицы В на последний элемент столбца Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога
Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
|
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
|
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога
В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
|
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога
Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
|
|
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога
Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
|
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога
Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
|
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования.
Часть библиотеки BedvitCOM
Использованы. . .
|
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога
SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
|