Графика
November 21, 2022

Визуализация сортировки

Как проиллюстрировать сортировку по росту в массиве учеников? В PascalABC.NET для этого есть великолепные модули ABCDatabases и GraphWPF.

Пишем процедуру Histogram:

procedure DrawHistogram(a: sequence of Ученик; x,y,w:real);
begin
  foreach var p in a do
  begin
    Rectangle(x,y,w,-p.Рост);
    DrawText(x,y,w,-p.Рост,p.Рост);
    TextOut(x,y+10,p.Фамилия,Alignment.LeftBottom,60);
    x += w
  end;
end;

Подключаем модуль ABCDatabases, заполняем массив учеников, фильтруем, скажем, только девочек:

  var pupils := ЗаполнитьМассивУчеников;
  var girls := pupils.Where(p -> p.Пол = Жен);

И рисуем две гистограммы - по неотсортированной и по отсортированной последовательностям:

  DrawHistogram(girls,50,200,25);
  DrawHistogram(girls.OrderBy(p -> p.Рост),50,500,25);

Итоговый код (19 строк):

И результат работы программы:

Вывод. Визуализация плюс учебные средства, содержащие простые базы данных, - отличное средство обучения различным алгоритмам. А если алгоритмы реализуются в виде запросов к последовательностям, то можно коротко и понятно проиллюстрировать множество задач