С Новым годом! Форум программистов, компьютерный форум, киберфорум
Pascal (Паскаль)
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.88/8: Рейтинг темы: голосов - 8, средняя оценка - 4.88
0 / 0 / 0
Регистрация: 26.02.2015
Сообщений: 51

Программа для графической иллюстрации сортировки массивов слиянием

10.11.2015, 16:43. Показов 1761. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Задача.
Напишите программу для графической иллюстрации сортировки массивов алгоритмом слияния. Массивы изобразите в виде диаграммы — каждый элемент массива представляется в виде столбика, высота которого пропорциональна значению элемента. Визуализация сортировки сводится к показу массивов после каждого перемещения элементов.
Пример из учебника:
Задача . Построить семейство одинаковых окружностей, центры которых лежат на вертикально вращающемся отрезке, верхний конец которого закреплен.
Переменные:
x, y — координаты центра очередного маленького круга;
y0 — смещение кругов по вертикале;
i — переменная цикла;
t — угол поворота;
drive — тип графического драйвера;
mode — режим работы графического адаптера.
Для решения задачи:
1) инициируем модуль graph;
2) устанавливаем начальные значения радиуса, координаты центра;
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
uses crt, graph;
var drive,mode,x,y,i,t,y0:integer;
begin
 drive:=detect;
 initgraph(drive,mode,'c:\tp\bgi');
 setfillstyle(1,1);
 floodfill(1,4,1);
 t:=4;
 y0:=10;
 setcolor(16);
 for i:=1 to 150 do
 begin
 t:=t+2;
 y0:=y0+3;
 x:=getmaxx div 2 + trunc(cos(t/10)*i);
 y:=y0 – trunc(sin(t/10)*i);
 setfillstyle(1,14);
 fillellipse(x,y,20,20);
 delay(100);
 end;
 repeat
 until keypressed;
 closegraph;
end.
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
10.11.2015, 16:43
Ответы с готовыми решениями:

Напишите программу для графической иллюстрации сортировки массивов алгоритмом слияния
Кто может написать код по следующему заданию. Напишите программу для графической иллюстрации сортировки массивов алгоритмом слияния....

Написать программу для графической иллюстрации сортировки массива методом пузырька
Напишите программу для графической иллюстрации сортировки массива методом «пузырька». Массив изобразить в виде диаграммы – каждый элемент...

Напишите программу для графической иллюстрации сортировки массива алгоритмом простых включений
Товарищи доброго времени суток, помогите программой!! Есть задача: "Напишите программу для графической иллюстрации сортировки массива...

4
Почетный модератор
 Аватар для Puporev
64314 / 47610 / 32743
Регистрация: 18.05.2008
Сообщений: 115,168
11.11.2015, 11:25
Цитата Сообщение от davitalik Посмотреть сообщение
Пример из учебника:
Какое он имеет отношение к сортировке и вообще к приведенной задаче?

Добавлено через 27 минут
Цитата Сообщение от davitalik Посмотреть сообщение
сортировки массивов алгоритмом слияния
Т.е. берется 2 упорядоченных массива и сливаются в один упорядоченный?
0
0 / 0 / 0
Регистрация: 26.02.2015
Сообщений: 51
11.11.2015, 12:04  [ТС]
Цитата Сообщение от ZX Spectrum-128 Посмотреть сообщение
Написать программу для графической иллюстрации сортировки массива методом пузырька
данная задача из этого же учебника
Цитата Сообщение от Puporev Посмотреть сообщение
Какое он имеет отношение к сортировке и вообще к приведенной задаче?
пример предшествовал списку задач
Цитата Сообщение от Puporev Посмотреть сообщение
Т.е. берется 2 упорядоченных массива и сливаются в один упорядоченный?
совершенно верно
0
Почетный модератор
 Аватар для Puporev
64314 / 47610 / 32743
Регистрация: 18.05.2008
Сообщений: 115,168
11.11.2015, 13:41
Лучший ответ Сообщение было отмечено davitalik как решение

Решение

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
uses graph,crt;
const n=10; {количество элементов в исходных массивах}
var a,b:array[1..n+1] of integer;{исходные массивы значений}
    c:array[1..2*n] of integer;{итоговый массив}
    x,y1,y2,y3,i,j,k,ia,ib,mx,d,w,h:integer;
    ms:real;
    ma,mb:set of byte;
begin
randomize;
initgraph(x,y1,'');
a[1]:=5+random(5);
b[1]:=5+random(5);
mx:=0;{максимальное значение}
for i:=2 to n do
 begin
  a[i]:=a[i-1]+random(10);
  if a[i]>mx then mx:=a[i];
  b[i]:=b[i-1]+random(10);
  if b[i]>mx then mx:=b[i];
 end;
d:=5;{пропуски между столбцами}
w:=(getmaxX-d*(2*n+1)) div (2*n); {ширина столбцов}
y1:=getmaxY div 3-20;{нижняя граница столбцов 1 массива}
y2:=2*getmaxY div 3-20;{нижняя граница столбцов 2 массива}
y3:=getmaxY-20;
x:=d;{левый край первого столбца}
ms:=(y1-20)/mx;{масштаб для определения высоты столбцов на экране}
for i:=1 to n do{исходное положение столбцов 1 массива}
 begin
  rectangle(x,y1-round(a[i]*ms),x+w,y1);
  x:=x+w+d;
 end;
x:=d;
for i:=1 to n do{исходное положение столбцов 2 массива}
 begin
  rectangle(x,y2-round(b[i]*ms),x+w,y2);
  x:=x+w+d;
 end;
delay(1000);
a[n+1]:=maxint;
b[n+1]:=maxint;
ia:=1;
ib:=1;
ma:=[];
mb:=[];
for i:=1 to 2*n do
 begin
  cleardevice; {очищаем экран}
  if a[ia]>b[ib] then
   begin
    c[i]:=b[ib];
    mb:=mb+[ib];
    ib:=ib+1;
    x:=d;
    for j:=1 to n do {новое положение столбцов 1 массива}
     begin
      if not(j in ma) then rectangle(x,y1-round(a[j]*ms),x+w,y1);
      x:=x+w+d;
     end;
    x:=d;
    for j:=1 to n do{исходное положение столбцов 2 массива}
     begin
      if not(j in mb) then rectangle(x,y2-round(b[j]*ms),x+w,y2);
      x:=x+w+d;
     end;
    x:=d;
    for k:=1 to i do{исходное положение столбцов 2 массива}
     begin
      rectangle(x,y3-round(c[k]*ms),x+w,y3);
      x:=x+w+d;
     end;
   end
  else
   begin
    c[i]:=a[ia];
    ma:=ma+[ia];
    ia:=ia+1;
    x:=d;
    for j:=1 to n do {новое положение столбцов 1 массива}
     begin
      if not(j in ma) then rectangle(x,y1-round(a[j]*ms),x+w,y1);
      x:=x+w+d;
     end;
    x:=d;
    for j:=1 to n do{исходное положение столбцов 2 массива}
     begin
      if not(j in mb) then rectangle(x,y2-round(b[j]*ms),x+w,y2);
      x:=x+w+d;
     end;
    x:=d;
    for k:=1 to i do{исходное положение столбцов 2 массива}
     begin
      rectangle(x,y3-round(c[k]*ms),x+w,y3);
      x:=x+w+d;
     end;
   end;
  delay(1000);
 end;
outtextXY(getmaxX div 2-150,20,'Sortirovka zakonchena, press any key');
readkey
end.
2
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
11.11.2015, 13:41
Помогаю со студенческими работами здесь

[Сортировка слиянием] Уменьшить количество требуемой памяти для сортировки
Добрый, на момент написания, день всем. Изучаю алгоритмы данных, дошёл до сортировки слиянием (Merge Sort). Прочитал, что для...

Алгоритм нисходящей сортировки слиянием. Переделать для двусвязного списка (LinkedList)
Есть проблема с переписыванием алгоритма для двусвязного списка LinkedList, как это можно реализовать public int...

Напишите функцию сортировки, похожую на функцию которая использовалась для сортировки массивов, с той разницей, что ее а
Напишите функцию сортировки, похожую на функцию которая использовалась для сортировки массивов, с той разницей, что ее аргументом должен...

Хочу освоить метод сортировки слиянием. Может кто-либо объяснить где и для чего его лучше применять.
Всем здравствуйте! Вновь мне нужна помощь по С#. Я хочу освоить метод сортировки слиянием. Может кто-либо объяснить где и для чего его...

Компараторы для сортировки массивов
Как в Java пишутся компараторы для сортировки массивов? Или возможно в Java уже есть готовые объекты для этого, как в С++ (greater, less и...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
Первый деплой
lagorue 16.01.2026
Не спеша развернул своё 1ое приложение в kubernetes. А дальше мне интересно создать 1фронтэнд приложения и 2 бэкэнд приложения развернуть 2 деплоя в кубере получится 2 сервиса и что-бы они. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь постоянного тока с R, L, C, k(ключ), U, E, J. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа, решает её и находит токи на L и напряжения на C в установ. режимах до и. . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Изучаю kubernetes
lagorue 13.01.2026
А пригодятся-ли мне знания kubernetes в России?
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru