Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

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

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 22.06.2013, 16:17   #1
Tramchik
Новичок
Джуниор
 
Регистрация: 22.06.2013
Сообщений: 2
По умолчанию Дана матрица действительных чисел A размера MxN, элементы строк которой упорядочиваются по неубыванию. Получить одномерный массив

Имеется матрица действительных чисел A размера MxN, элементы строк которой упорядочиваются по неубыванию, т.е. a[i1]<=a[i2]<=...a[in], 1<=i<=m. Преобразовать матрицу А в одномерный массив Х, упорядоченный также по неубыванию. Основное требование - эффективность решения.
P.s очень на вас надеюсь, если возможно с пояснениями.
Изображения
Тип файла: jpg Безымянный.jpg (81.7 Кб, 161 просмотров)
Tramchik вне форума Ответить с цитированием
Старый 22.06.2013, 16:22   #2
Человек_Борща
Старожил
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Сообщений: 11,426
По умолчанию

Где ваши наработки?
Человек_Борща вне форума Ответить с цитированием
Старый 22.06.2013, 16:29   #3
Tramchik
Новичок
Джуниор
 
Регистрация: 22.06.2013
Сообщений: 2
По умолчанию

Вообще ничего нет((((
Tramchik вне форума Ответить с цитированием
Старый 22.06.2013, 18:40   #4
Вадим Мошев

Старожил
 
Аватар для Вадим Мошев
 
Регистрация: 12.11.2010
Сообщений: 8,568
По умолчанию

А вот интересно, при переходе на новую строку упорядоченность сохраняется или нет?
Если да, то можно просто переписать все элементы построчно в одномерный массив. Если же нет, то чем отличается данная задача от той, где из обычной квадратной матрицы, элементы которой не обладают упорядоченностью, надо сделать упорядоченный массив? Почему отдельно оговорено, что
Цитата:
элементы строк которой упорядочиваются по неубыванию, т.е. a[i1]<=a[i2]<=...a[in], 1<=i<=m.
Хотя, это может являться подспорьем...
Вадим Мошев вне форума Ответить с цитированием
Старый 22.06.2013, 20:10   #5
Poma][a
Новичок
Джуниор
 
Регистрация: 11.10.2011
Сообщений: 3,882
По умолчанию

Пути решения :
1) Загнать всё бездумно в массив и QSort'нуть
2) Реализовать процедурку слива одного массива в другой, на выходе - упорядоченный массив, и крутить её для 1 и 2 строки (загоняя во 2), далее для 2 и 3 (загоняя в 3), etc.

Ессесно, №2 лучше.. В процедурке для лучшего поиска надо искать место для каждого элемента дихотомией..
Poma][a вне форума Ответить с цитированием
Старый 23.06.2013, 00:58   #6
ViktorR
Старожил
 
Регистрация: 23.10.2010
Сообщений: 2,309
По умолчанию

Poma][a
Цитата:
2) Реализовать процедурку слива одного массива в другой, на выходе - упорядоченный массив, и крутить её для 1 и 2 строки (загоняя во 2), далее для 2 и 3 (загоняя в 3), etc.
Сложновато для понимания моим мозгом
Одномерный массив формируем так:
1. Копируем в одномерный массив первую строку.
2. В полученном масссиве дихотомией находим место для вставки следующей строки - функция PInsert с параметрами: массив данных, текущий размер данных, значение первого элемента строки. Возвращяет номер элемента, после которого надо выполнить вставку.
3. Вставляем строку - процедура Insert с параметрами: массив данных, массив с элементами строки, номер элемента, после которого надо вставить строку.
4. Если не конец, то п.2.

Написал и задумался. А если элементы одной строки надо вставлять между ...
Poma][a
Цитата:
В процедурке для лучшего поиска надо искать место для каждого элемента дихотомией..
Т.е. надо написать процедуру поиска точки вставки с учетом того, что место для втавки предыдущего элемента строки найдено.
Типа:
Вставить первый элемент строки - поиск точки вставки - от начала массива до его текущего размера.
Вставить последний элемент строки - поиск от точки вставки первого элемента до текущего размера массива.
Вставить второй элемент строки - поиск между предыдущими значениями.
Вставить предпоследний элемент строки ...



Вроде так, ...
Как-то так, ...
ViktorR вне форума Ответить с цитированием
Старый 23.06.2013, 01:16   #7
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,291
По умолчанию

Вообще-то для объединения упорядоченных массивов есть Сортировка слиянием
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA вне форума Ответить с цитированием
Старый 23.06.2013, 13:08   #8
Poma][a
Новичок
Джуниор
 
Регистрация: 11.10.2011
Сообщений: 3,882
По умолчанию

BDA
Ну как так можно? Обломали весь кайф фи..

По теме :
Помнится в этом (учебном) году на городской олимпиаде на теории (как я это ненавижу) была задача слива 2-х массивов в 1.. За слияние давали половину баллов (именно эту половину я и получил).. А за что-то (убей - не помню что) давали максимум..
Помню одно - там была дихотомия.. Т.к. сам ужасно ленив (эх да...), то на разборе ничего не писал.. Вот пробую достучаться до одногруппник
Poma][a вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Дана прямоугольная матрица действительных чисел. Black Panther Помощь студентам 3 29.11.2012 07:00
. Даны натуральные M, N и матрица действительных чисел размером MxN. Определить числа B1,B2,...,BM, равные разностям наи Proskurina Паскаль, Turbo Pascal, PascalABC.NET 3 29.05.2012 23:59
Дана квадратная матрица А из N элементов. Получить из нее одномерный массив, прочитав(язык си+++) mitja-zakelidis Помощь студентам 7 17.03.2012 15:23
Дана квадратная матрица А из N элементов. Получить из нее одномерный массив(язык с++) yury.zanilov Помощь студентам 6 16.03.2012 13:46
Дана матрица размера MxN и целое число К(1<K<M). Удалить строку матрицы с номером К bolshe_ne_RUS Паскаль, Turbo Pascal, PascalABC.NET 6 14.06.2011 16:26