С Новым годом! Форум программистов, компьютерный форум, киберфорум
Pascal ABC
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
0 / 0 / 0
Регистрация: 22.10.2018
Сообщений: 43
1

Разработка с использованием сортировки по методу Шелла

27.03.2019, 00:27. Показов 362. Ответов 1
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
В данном двумерном массиве упорядочить элементы, расположенные после второго максимального элемента по убыванию.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
27.03.2019, 00:27
Ответы с готовыми решениями:

Разработка с использованием быстрой сортировки (по методу Хоара)
Организуйте массив, состоящий из 20 различных целых чисел. После этого упорядочить отдельно четные...

Использованием быстрой сортировки (по методу Хоара)
Организуйте массив, состоящий из 20 различных целых чисел. Упорядочите его по возрастанию. После...

Разработка алгоритма и программ с использованием методов внутренней сортировки
Создайте массив А целых чисел с помощью генератора случайных чисел и выведите его на экран....

Разработка алгоритмов и программ с использованием методов внутренней сортировки
Составьте программу с использованием указанного метода сортировки. Необходимо сформировать...

1
Эксперт Pascal/Delphi
6811 / 4568 / 4819
Регистрация: 05.06.2014
Сообщений: 22,438
02.04.2019, 14:43 2
Сортировки
Преобразовать двумерный массив в одномерный
Преобразование одномерного массива в двумерный


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
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
const
  max = 100;
 
type
  vector = array [1..max * max] of integer;
  matrix = array [1..max, 1..max] of integer;
 
{Сортировка Шелла }
procedure ShellSort(var A: vector; n_max: integer);
const
  steps = 12;
var
  i, j, l, k, p, n: Integer;
  x: integer;
  s: array [1..steps] of Integer;
begin
  k := 1;
      { Формируем последовательность чисел -
        шаги, с которыми выбираем сортируемые подмассивы }
  for i := steps downto 1 do
  begin
    s[i] := k;
    k := k * 2 + 1;
  end;
  
      { Сортировки подмассивов вплоть до шага 1 -
        обычной сортировки пузырьком }
  for k := 1 to steps do
  begin
    l := s[k];
          { Для каждого шага l нужно отсортировать l подмассивов }
    for p := 1 to l do
    begin
      i := n_max - l;
      n := 1;
              { Сортировка подмассива пузырьком с остановкой }
              { Подмассив - это (A[p], A[p+l], A[p+2*l], ...) }
      while n > 0 do
      begin
        n := 0;
        j := p;
        while j <= i do
        begin
          if A[j] < A[j + l] then
          begin
            x := A[j];
            A[j] := A[j + l];
            A[j + l] := x;
            n := 1;
          end;
          j := j + l;
        end;
        i := i - l;
      end;
    end;
  end;
end;
 
var
  q, temp: vector;
  r: matrix;
  k, imax, j, m, n, i: integer;
 
begin
  n := 8;
  m := 10;
  writeln('Исходная матрица: ');
  k := 0;
  {Формирование массива и свертка матрицы в вектор }
  for i := 1 to n do
  begin
    for j := 1 to m do
    begin
      r[i, j] := -n div 2 + random(m);
      write(r[i, j]:6);
      inc(k);
      q[k] := r[i, j];
    end;
    writeln;
  end;
  
  {Поиск  max }
  imax := 1;
  for i := 1 to n do
    if q[i] > q[imax] then
      imax := i;
  k := 0;      
  for i := 1 to n do
    if q[i] = q[imax] then
    begin
      imax := i;
      inc(k);
      if k = 2 then 
        break;
    end;
 
  if k <> 2 then
  begin
    writeln('Нет 2-го максимума! Выход из программы!');
    exit;
  end
  else
  begin
    writeln('Max: ', q[imax]);
    k := 0;
    for i := imax + 1 to n * m do
    begin
      inc(k);
      temp[k] := q[i];
    end;
    shellsort(temp, k);
    k := 0;
    for i := imax + 1 to n * m do
    begin
      inc(k);
      q[i] := temp[k];
    end;
    writeln('Отсортированная матрица: ');  
    for i := 1 to n do
    begin
      for j := 1 to m do
      begin
        r[i, j] := q[j + m * (i - 1)];
        write(r[i, j]:6);
      end;
      writeln;
    end;
  end;
end.
0
02.04.2019, 14:43
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
02.04.2019, 14:43
Помогаю со студенческими работами здесь

Разработка алгоритма и программ с использованием методов внутренней сортировки
1. Создайте массив А вещественных чисел с помощью генератора случайных чисел и выведите его на...

Составить блок – схемы для шейкер- сортировки и сортировки Шелла
Доброго времени суток, очень нужна ваша помощь в решении данной проблемы, буду бесконечно...

Создать программу реализующую два алгоритма сортировки одномерного массива: методом Шелла и быстрой сортировки
ЗАДАЧА. Создать программу реализующую два алгоритма сортировки одномерного массива: сортировка...

Метод сортировки Шелла
помогите дописать программу в case 6 СТРОИТЕЛЬНАЯ КОМПАНИЯ (поля: заказчик, вид строительных ...


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

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru