1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code], либо быть опубликованы на нашем PasteBin в режиме вечного хранения.
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!
| SunDevil |
Сообщение
#1
|
|
Гость |
Есть задача: вводим матрицу 4 на 4 с клавиатуры, а прога должна отсортировать ВСЕ СТРОКИ матрицы по убыванию методом подсчета.
Нем огу реализовать эту процедуру сортировки, ПОМОГИТЕ, ПЛИЗ! |
![]() ![]() |
| volvo |
Сообщение
#2
|
|
Гость |
Сортировка подсчетом.
Этот метод подходит для сортировки целых чисел из не очень большого диапазона (сравнимого с размером массива). Идея вот в чем: для каждого элемента найти, сколько элементов, меньших определенного числа, и поместить это число на соответствующие место. Делается это так: за линейный проход по массиву мы для каждого из возможных значений подсчитываем, сколько элементов имеют такое значение. Потом добавляем к каждому из найденных чисел суму всех предыдущих. Получая, таким образом, сколько есть элементов, значения которых не больше данного значения. Далее, опять-таки за линейный проход, формируем из исходного массива новый отсортированный. При этом следим, чтобы два одинаковых элемента не были записаны в одно место. Если все равно непонятно, смотрите реализацию: Код Program CountingSort; Var A,B : array[1..1000] of byte; C : array[byte] of integer; N,i : integer; Begin {Определение размера массива A (N) и его заполнение} … {сортировка данных} for i:=0 to 255 do C[i]:=0; for i:=1 to N do C[A[i]]:=C[A[i]]+1; for i:=1 to 255 do C[i]:=C[i-1]+C[i]; for i:=N downto 1 do begin B[C[A[i]]]:=A[i]; C[A[i]]:=C[A[i]]-1; {здесь мы избегаем возможности записи двух одинаковых чисел в одну ячейку} end; {Вывод массива B} … End. |
SunDevil Сортировка строк матрицы 17.03.2005 23:35
volvo Читайте здесь (описан сам принцип сортировки матри… 17.03.2005 23:43
SunDevil 2volvo
Спасибо тебе, но проблема еще и в том, что … 17.03.2005 23:55
Georgich Вот исходник, помогите, пожалуйста, а то не работа… 18.03.2005 2:47
volvo Ну, вот так она компилируется... правильность рабо… 18.03.2005 3:03
Georgich Не могу все с этой сортировкой разобраться.....туп… 20.03.2005 18:22
volvo Вот так:
const
maxSize = 1000; { Это при же… 20.03.2005 18:26
Georgich Вот что получается, вернее не получается совсем...… 20.03.2005 20:37
volvo Georgich, ну будьте же внимательнее!!… 20.03.2005 20:47
Georgich 2 volvo
есть некоторые вопросы:
const
maxSize = 1… 20.03.2005 20:55
volvo Вот рабочая версия: 20.03.2005 21:01
Georgich 2 volvo
БОЛЬШУЩИЕ ТЕБЕ СПАСИБО! 20.03.2005 21:48
Georgich Появилась проблема снова с матрицей! Надо отсо… 18.04.2005 14:51
volvo Может быть, вот так:
for j := 1 to m do
for … 18.04.2005 15:00
Georgich 2 volvo
Это, вроде по возрастанию столбцы сортируе… 18.04.2005 15:13
volvo Ну, как у тебя было написано, так я и переделал...… 18.04.2005 15:16![]() ![]() |
|
Текстовая версия | 18.02.2026 12:45 |