Файл: Методы сортировки данных: эволюция и сравнительный анализ. Примеры использования(Понятие данных и массивов данных).pdf
Добавлен: 23.04.2023
Просмотров: 171
Скачиваний: 2
СОДЕРЖАНИЕ
Глава 1. Общая характеристика методов сортировки данных
1.1. Понятие данных и массивов данных
1.2. Общая характеристика методов сортировки данных
Глава 2. Особенности сортировки данных с учетом возможностей среды программирования.
2.1. Возможности среды Lazarus для реализации программы сортировки
2.2. Использование методов сортировки массивов при решении задач в языке программирования Lazarus
В приведенном ниже фрагменте программы вначале в строку записывается содержимое всего окна . Затем отыскивается позиция конца первой строки (n) и эта строка копируется в и удаляется из . На рисунке 3 приведен результат работы программы. [5]
Рисунок 3. Результат обработки
Приведенный выше пример не предусматривает такого условия, что любая подстрока может содержать любое количество пробелов. Строки перед преобразованием в число нужно удалить.
Чтобы вернуть подстроку с номером n из строки мы воспользуемся функцией .
Рисунок 4. Результат работы программы ввода массива
Для отображения списка значений в Lazarus на экране воспользуемся компонентом . Этот компонент содержит в своем составе объект-список, имеющий набор строк с ассоциированными с ними случайными объектами. Для того чтобы отобразить последовательно на экране данные, которые вводятся в строку ввода, может исполнить оператор . Если нужно вывести в элементы массива, то используют оператор .
Возможности строк ввода и списка объединяет комбинированная строка ввода (поле со списком) . Чтобы добавить элемент в список вызовем оператор . Свойство логического типа указывает указывает отображается ли раскрывающийся список в данный момент. Свойство доступно только на этапе выполнения программы. [7]
В обработчике действия для формы можно задать установку исходных значений. Это событие появляется в момент создания формы. Размещение операторов в данном обработчике во множестве случаях эквивалентно размещению операторов в секции инициализации модуля. При выполнении двойного щелчка по форме появится заготовка обработчика этого действия. Методы , , и дают возможность очистить соответствующие компоненты.
Таким образом, в данном параграфе были исследованы наиболее популярные в настоящее время возможности среды Lazarus для реализации программы сортировки, выявлены их главные достоинства и недостатки.
2.2. Использование методов сортировки массивов при решении задач в языке программирования Lazarus
Для решения третьей задачи нам нужно на примере задачи разработать программу реализующую сортировку массива.
Задача. Выполнить сортировку несколькими способами одномерного массива 10 целых чисел, находящихся в диапазоне от 0 до 100.
Для начала, для лучшего понимания задачи, нам необходимо построить блок-схему.
Блок-схема.
Теперь мы разработаем исходного кода (листинг программы) — для описания нашей программы.
Исходный код нам необходим, так как его можно использовать в качестве повторного кода, для создания другого проекта.
Исходный код — важнейший компонент для процесса портирования программного обеспечения на другие платформы. Без исходного кода какой-либо части ПО, портирование либо слишком сложно, либо вообще невозможно.
Программа
unit Unit1;
{$mode objfpc}{$H+}
interface
uses
Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, Grids, StdCtrls;
type
{ TForm1 }
TForm1 = class(TForm)
Button1: TButton;
Button2: TButton;
StringGrid1: TStringGrid;
StringGrid2: TStringGrid;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
private
{ private declarations }
procedure ArrayCreate;
public
{ public declarations }
end;
var
Form1: TForm1;
i, j: Integer;
a: array [1..10] of Integer;
implementation
{$R *.lfm}
{ TForm1 }
{ Создание исходного массива }
procedure TForm1.ArrayCreate;
begin
Randomize;
for i := 0 to 9 do
begin
a[i + 1] := Random(100);
StringGrid1.Cells[i, 0] := FloatToStrF(i + 1, ffFixed, 2, 0);
StringGrid1.Cells[i, 1] := FloatToStrF(a[i + 1], ffFixed, 2, 0);
StringGrid2.Cells[i, 0] := FloatToStrF(i + 1, ffFixed, 2, 0);
StringGrid2.Cells[i, 1] := FloatToStrF(a[i + 1], ffFixed, 2, 0);
end;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
ArrayCreate;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
ArrayCreate;
end;
1) Разработаем программу сортировки простыми вставками.
{ Сортировка простыми вставками }
procedure TForm1.Button2Click(Sender: TObject);
var x: Integer;
begin
for i := 2 to 10 do
if a[i - 1] > a[i] then
begin
x := a[i];
j := i - 1;
while (j > 0) and (a[j] > x) do
begin
a[j + 1] := a[j];
j := j - 1;
end;
a[j + 1] := x;
end;
x := 0;
for i := 0 to 9 do
begin
StringGrid2.Cells[i, 1] := FloatToStrF(a[i + 1], ffFixed, 2, 0);
for j := 0 to 9 do
if (StringGrid2.Cells[i, 1] = StringGrid1.Cells[j, 1]) and (j <> x) then
begin
StringGrid2.Cells[i, 0] := FloatToStrF(j + 1, ffFixed, 2, 0);
x := j;
Break;
end;
end;
end;
end.
2) Разработаем программу сортировки простыми вставками с барьером.
{ Сортировка простыми вставками с барьером }
procedure TForm1.Button2Click(Sender: TObject);
begin
for i := 2 to 10 do
if a[i - 1] > a[i] then
begin
a[0] := a[i];
j := i - 1;
while a[j] > a[0] do
begin
a[j + 1] := a[j];
j := j - 1;
end;
a[j + 1] := a[0];
end;
a[0] := 0;
for i := 0 to 9 do
begin
StringGrid2.Cells[i, 1] := FloatToStrF(a[i + 1], ffFixed, 2, 0);
for j := 0 to 9 do
if (StringGrid2.Cells[i, 1] = StringGrid1.Cells[j, 1]) and (j <> a[0]) then
begin
StringGrid2.Cells[i, 0] := FloatToStrF(j + 1, ffFixed, 2, 0);
a[0] := j;
Break;
end;
end;
end;
end.
3)Разработаем программу сортировки простым выбором.
{ Сортировка простым выбором }
procedure TForm1.Button2Click(Sender: TObject);
var x, iMin: Integer;
begin
for i := 1 to 9 do
begin
iMin := i;
for j := i + 1 to 10 do
if a[j] <= a[iMin] then iMin := j;
if iMin <> i then
begin
x := a[i];
a[i] := a[iMin];
a[iMin] := x;
end;
end;
x := 0;
for i := 0 to 9 do
begin
StringGrid2.Cells[i, 1] := FloatToStrF(a[i + 1], ffFixed, 2, 0);
for j := 0 to 9 do
if (StringGrid2.Cells[i, 1] = StringGrid1.Cells[j, 1]) and (j <> x) then
begin
StringGrid2.Cells[i, 0] := FloatToStrF(j + 1, ffFixed, 2, 0);
x := j;
Break;
end;
end;
end;
4) Разработаем программу сортировки методом «пузырька».
{ Сортировка пузырьковым методом }
procedure TForm1.Button2Click(Sender: TObject);
var x: Integer;
begin
for i := 1 to 9 do
for j := 1 to 10 - i do
if a[j] > a[j + 1] then
begin
x := a[j];
a[j] := a[j + 1];
a[j + 1] := x;
end;
x := 0;
for i := 0 to 9 do
begin
StringGrid2.Cells[i, 1] := FloatToStrF(a[i + 1], ffFixed, 2, 0);
for j := 0 to 9 do
if (StringGrid2.Cells[i, 1] = StringGrid1.Cells[j, 1]) and (j <> x) then
begin
StringGrid2.Cells[i, 0] := FloatToStrF(j + 1, ffFixed, 2, 0);
x := j;
Break;
end;
end;
end;
Таким образом, на примере обычной задачи нами была разработана программа, реализующая сортировку массива, работа которой осуществлялась через следующую последовательность: написание блок-схемы → далее мы разработали исходный код (листинг программы) — для описания нашей основной программы → создаем программу исходного массива → разработали программу сортировки простыми вставками → разработали программу сортировки простыми вставками с барьером → разработаем программу сортировки простым выбором → разработали программу сортировки методом «пузырька».
ЗАКЛЮЧЕНИЕ
В ходе написания курсового проекта мы рассмотрели понятие «массив», виды массивов. Изучили какая осуществляется работа над элементами массива. Так же были выявлены простейшие методы сортировки массива, а именно метод «пузырька», сортировка вставками, сортировка посредством выбора.
Для успешной реализации проекта были исследованы наиболее популярные в настоящее время возможности среды Lazarus для реализации программы сортировки, выявлены их главные достоинства и недостатки.
В результате на примере обычной задачи нами была разработана программа, реализующая сортировку массива, работа которой осуществлялась через следующую последовательность: написание блок-схемы → далее мы разработали исходный код (листинг программы) — для описания нашей основной программы → создаем программу исходного массива → разработали программу сортировки простыми вставками → разработали программу сортировки простыми вставками с барьером → разработаем программу сортировки простым выбором → разработали программу сортировки методом «пузырька».