Файл: Методы сортировки данных: эволюция и сравнительный анализ. Примеры использования(Понятие данных и массивов данных).pdf

ВУЗ: Не указан

Категория: Курсовая работа

Дисциплина: Не указана

Добавлен: 23.04.2023

Просмотров: 171

Скачиваний: 2

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.

В приведенном ниже фрагменте программы вначале в строку записывается содержимое всего окна . Затем отыскивается позиция конца первой строки (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 для реализации программы сортировки, выявлены их главные достоинства и недостатки.

В результате на примере обычной задачи нами была разработана программа, реализующая сортировку массива, работа которой осуществлялась через следующую последовательность: написание блок-схемы → далее мы разработали исходный код (листинг программы) — для описания нашей основной программы → создаем программу исходного массива → разработали программу сортировки простыми вставками → разработали программу сортировки простыми вставками с барьером → разработаем программу сортировки простым выбором → разработали программу сортировки методом «пузырька».