1 / 1 / 0
Регистрация: 21.08.2012
Сообщений: 33
1

Сортировка строк методом прямых вставок с барьером

10.01.2013, 13:36. Показов 4379. Ответов 3
Метки нет (Все метки)

Здравствуйте! Срочно нужна помощь в решении задачи. Задача сама по себе легкая, но не могу реализовать сам метод сортировки.
Помогите пожалуйста в решении...

Условие:
Дана матрица. Упорядочить элементы строк матрицы по возрастанию, а сами строки по возрастанию суммы элементов строк. Использовать сортировку прямыми вставками с барьером, реализовав метод в виде подпрограммы
Спасибо

Добавлено через 14 часов 15 минут
Ап. Ребята спасайте! Готов и на пивко подкинуть...
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
10.01.2013, 13:36
Ответы с готовыми решениями:

Сортировка прямых вставок с барьером
Дана матрица размера M×N. Упорядочить ее строки так, чтобы их последние элементы образовывали...

Сортировка методом вставок
Приветик всем! Вот мое задание Разработать программу, реализующую простейший метод сортировки...

Сортировка методом Вставок
Вот собственно вопрос. Масив записей структура которого конечная остановка, и время прибытия, нужно...

Сортировка методом вставок
Заполнить массив размером 20 случайными числами в диапазоне от 0 до 200. Во второй массив выбрать...

3
181 / 179 / 23
Регистрация: 29.08.2012
Сообщений: 489
10.01.2013, 17:26 2
Использовать сортировку прямыми вставками с барьером
Что мешает про этот метод сортировки почитать и сделать, тем более, что есть готовые подсказки прямо под твоей темой, раз уж Гугл с Яндексом недоступны.
Готов и на пивко подкинуть...
Есть раздел Фриланса - там и пиво примут и помогут с заданием. Только теперь туда не пиши, тут пиши (по правилам одна задача - одна тема).
0
233 / 223 / 146
Регистрация: 19.03.2012
Сообщений: 369
10.01.2013, 17:44 3
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
{Дана матрица. Упорядочить элементы строк матрицы по возрастанию,
а сами строки по возрастанию суммы элементов строк. Использовать 
сортировку прямыми вставками с барьером, реализовав метод в виде 
подпрограммы}
{Метод прямых вставок с барьером (ПрВстБар)
Для того чтобы сократить количество сравнений, производимых нашей программой,
дополним сортируемый массив нулевой компонентой (это следует сделать в разделе 
описаний var) и будем записывать в нее поочередно каждый вставляемый элемент 
(сравните строки (*) и (**) в приведенных вариантах программы). В тех случаях, 
когда вставляемое значение окажется меньше, чем a[1], компонента a[0] будет 
работать как "барьер", не дающий индексу j выйти за нижнюю границу массива. 
Кроме того, компонента a[0] может заменить собою и дополнительную переменную х:}
 
const nmax=20;
var a:array[1..nmax,0..nmax] of integer;
    n,m,i,j,l:byte;
    sm,b:integer;
 
{Метод прямых вставок с барьером}
Procedure MetPrVstBar();
Var k:integer;
begin
for k:= 2 to n do
 if a[l,k-1]>a[l,k] then 
  begin a[l,0]:= a[l,k];          {*}
      j:= k-1;
       while a[l,j]>a[l,0] do         {**}  
      begin a[l,j+1]:= a[l,j];
       j:= j-1;
          end;
  a[l,j+1]:= a[l,0];
 end;
end;
 
BEGIN
randomize;
repeat
write('Количество строк до ',nmax,' m=');
readln(m);
until m in [1..nmax];
repeat
write('Количество столбцов n=');
readln(n);
until n in [1..nmax];
{вычисление сумм четных положительных в строках
и запись их в дополнительный столбец}
for i:=1 to m do
 begin
  sm:=0;
  for j:=1 to n do
   begin
    a[i,j]:=random(20);
    sm:=sm+a[i,j];
   end;
  a[i,n+1]:=sm;
 end;
Writeln; 
writeln('Исходный массив:');
writeln('Сумма':(n*4+8));
for i:=1 to m do
 begin
  for j:=1 to n+1 do
  if j=n+1 then write(a[i,j]:6)
  else write(a[i,j]:4);
  writeln;
 end;
{перестановка в столбцах по возрастанию} 
for l:=1 to m do MetPrVstBar;
{перестановка строк по возрастанию сумм(по последнему столбцу)}
for i:=1 to m-1 do
for l:=i+1 to m do
if a[i,n+1]>a[l,n+1] then
for j:=1 to n+1 do
 begin
  b:=a[i,j];
  a[i,j]:=a[l,j];
  a[l,j]:=b;
 end;
writeln;
writeln('Отсортированный по возрастанию :');
writeln('Сумма':(n*4+8));
for i:=1 to m do
 begin
  for j:=1 to n+1 do
  if j=n+1 then write(a[i,j]:6)
  else write(a[i,j]:4);
  writeln;
 end;
END.
Количество строк до 20 m=5
Количество столбцов n=10

Исходный массив:
Сумма
3 19 10 12 11 7 4 13 19 2 100
18 2 2 6 2 14 18 10 0 18 90
8 14 13 1 17 7 9 18 10 12 109
18 12 6 12 16 15 5 15 14 1 114
12 12 8 10 12 2 13 19 18 16 122

Отсортированный по возрастанию :
Сумма
0 2 2 2 6 10 14 18 18 18 90
2 3 4 7 10 11 12 13 19 19 100
1 7 8 9 10 12 13 14 17 18 109
1 5 6 12 12 14 15 15 16 18 114
2 8 10 12 12 12 13 16 18 19 122
Каряво получилось изображение примера ответа. При выполнении программы видно наглядно.
1
1 / 1 / 0
Регистрация: 21.08.2012
Сообщений: 33
10.01.2013, 21:27  [ТС] 4
Цитата Сообщение от Valery__ Посмотреть сообщение
Каряво получилось изображение примера ответа. При выполнении программы видно наглядно.
не ожидал... идеальнее ответ чем этот редко найдешь... спасибо большое
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
10.01.2013, 21:27
Помогаю со студенческими работами здесь

Сортировка методом вставок
Заполнить массив размером 20 случайными числами в диапазоне от 0 до 200. Во второй массив выбрать...

Сортировка методом вставок
Нужен код, сортирующий строки матрицы по возрастанию методом вставок. Матрица 5x5.

Сортировка методом простых вставок
Нужно отсортировать только элементы имеющие четный индекс. сейчас сортирует весь массив, как...

сортировка методом бинарных вставок
помогите решить задачу=)вот она:Дано масив цілих чисел. Скласти програму, яка відсортувала б його...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2023, CyberForum.ru