Алгоритм метода простых вставок использует прием котрым пользуется игрок в карты при сортировки только что разданной колоды: очередная карта вставляется между уже упорядоченными ранее.
Описания метода простых вставок: файл подлежащий сортировке, в общем случае состоит из элементов- записей, включающих информационную часть и ключи, по которым производятся упорядочение по возростанию. Поскольку информационная часть почти не влияет на процесс сортировки, предпологаем что файлы используемые в примерах, состоят только из элементов-ключей, а информационная часть записей.
В ходе выполнения данного курсового проекта были разработана программа на языке высокого уровня Delphi 7. А также изучены возможности данного языка.
Систематизированы и закреплены практические навыки использования ЭВМ, программного обеспечения, существующих средств обслуживания системных программистов, а также теоретические знания по основным разделам курса "Объектно-ориентированного программирования". Основное внимание уделено изучению современных методов защиты информации, способов проектирования приложений, объектно-ориентированному и системному программированию.
При выполнении курсового проекта произведено знакомство с реферативными журналами и другими информационными источниками по объектно-ориентированному и системному программированию с целью анализа состояния решаемой задачи.
Получены практические навыки работы в средеDelphi 7.
Формы программы
На рисунке 1.1 изображено главное меню программы:
Рис 1.1
Рис. 1.2
На рис. 1.3 показано окно “О программе”
Программа имеет возможность сохранять обрабатываемые данные в файл * txt.Сохранение производится в текстовый файл, который можно открыть с помощью любого текстового редактора.
Также программа вводит исходный массив из файла * txt который создается пользователем самостоятельно в любом текстовом редакторе. При создании исходного массива нужно придерживаться следующих правил:
· Файл должен содержать только числовую информацию.
· Первая цифра должна соответствовать количеству элементов массива, и после этой цифры пользователь должен перейти на новую строку (Enter).
· После перехода на новую строку, пользователь вводит нужный ему одномерный массив и сохраняет его под любым именем в формате *txt.
· Если вышеуказанные пункты были выполнены, то программа откроет созданный вами файл для сортировки.
Документация пользователя:
Запуск программы осуществляется при открытии файла SortMass.exe, который находится на носители информации. При этом на экране появиться окно, в левой верхней части которого будет видна надпись “SortMass 1.0” – это имя программы. Ниже располагается меню, с помощью которого можно выполнить различные действия с данным приложением. При нажатии на пункте меню “Меню” выпадет, так называемое всплывающее меню, в котором находится пункты: получить массив, сохранить массив, сравнение методов, выход.
Пункт “получить массив” позволяет пользователю ввести массив из файла *txt, для его сортировки.
Пункт “сохранить массив” позволяет сохранять отсортированный массив в файл *txt.
При нажатии по пункту “сравнение методов”, открывается новое окно в котором указывается начальное количество элементов массива, конечное количество элементов массива, и шаг изменения, и по этим параметрам строится график сравнения двух методов сортировки.
Следущй пункт “выход”, при выборе этого пункта программа закрывается.
Предпоследним пунктом меню является меню о программе, если выбрать этот пункт то откроется окно которое содержит информацию о разработчике и о самой программе.
Последним пунктом меню является меню “Спрвака” в этом меню содержится справочная информация по приложению.
Под меню располагается рабочая область, которая делится на две части: ввод массива и операции над ним, и отображение отсортированного
Системные требования: Pentium 133, 16 MBRAM, Windows 95/98/2000 NT/XP.
ТекстразработанногомодуляSortMass 1.0:
public
{ Public declarations }
mass=array of integer;
procedure puzerek(n:integer; var a:mass);
procedure prostvst(n:integer; var a:mass);
var
Form1: TForm1;
n,i:integer;
a:mass;
implementation
uses Unit2;
{$R *.dfm}
// процедура открытия массива из файла *txt (ввод массива)
procedure TForm1.Button1Click(Sender: TObject);
var name:string;
f:textfile;
begin
if opendialog1.Execute then name:=opendialog1.FileName;
if name='' then showmessage('Пожалуйста, выберитефайл') else
assignfile(f,name);
reset(f);
readln(f,n);
label1.caption:=inttostr(n);
Label4.Caption:='';
Series1.Clear;
SetLength(a,n+1);
for i:=1 to n do
begin
read(f,a[i]);
Label4.Caption:=Label4.Caption+' '+IntToStr(a[i]);
Series1.AddXY(i,a[i]);//отображния исходного массива на диограмме
end;
closefile(f);
end;
end;
// сортировкаметодомпузыртка
procedure puzerek(n:integer; var a:mass);
var j,tmp:integer;
begin
for i:=1 to n-1 do
for j:=1 to n-i do
begin
tmp:=a[j+1];
a[j+1]:=a[j];
a[j]:=tmp;
end;
end;
// сортировкаметодомпростыхвставок
procedure prostvst(n:integer; var a:mass);
var j,tmp:integer;
begin
for j:=2 to n do
begin
tmp:=a[j];
i:=j-1;
while (i>0) and (a[i]>tmp) do
begin
a[i+1]:=a[i];
i:=i-1;
end;
a[i+1]:=tmp;
end;
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
case Radiogroup1.ItemIndex of
0:puzerek(n,a);
1:prostvst(n,a);
end;
// Отчистка полей перед вводом массива
Label5.Caption:='';
Series2.Clear;
for i:=1 to n do
// Ввод массива в поля и отображение их на графе
begin
Label5.Caption:=Label5.Caption+' '+IntToStr(a[i]);
Series2.AddXY(i,a[i]);
end;
end;
// Процедурасохранениясортировки
procedure TForm1.Button3Click(Sender: TObject);
var name:string;
f:textfile;
begin
if savedialog1.Execute then name:=savedialog1.FileName;
begin
assignfile(f,name);
rewrite(f);
writeln(f,label5.caption);
closefile(f);
end;
end;
// Возврашение на первую форму
procedure TForm1.N2Click(Sender: TObject);
begin
application.Createform(tform2, form2);
form2.visible:=true;
form1.Hide;
end;
procedure TForm1.N3Click(Sender: TObject);
begin
Form3.Visible:=True;
end;
procedure TForm1.N4Click(Sender: TObject);
begin
end;
procedure TForm1.N5Click(Sender: TObject);
begin
Form1.Button3Click(Button3);
end;
// Вывод времени и даты в строку состояния
procedure TForm1.Timer1Timer(Sender: TObject);
begin
statusBar1.Panels[0].Text:=DateToStr(Now);
StatusBar1.Panels[1].Text:=TimeToStr(Now);
StatusBar1.Panels[0].Alignment:=taCenter;
end;
procedure TForm1.N8Click(Sender: TObject);
begin
Close;
end;
// Отчитскаполейввода
procedure TForm1.Button4Click(Sender: TObject);
begin
Label4.Caption:='';
Label5.Caption:='';
Series2.Clear;
end;
// открытиеокнаСравнениеметодов
procedure TForm1.Button5Click(Sender: TObject);
begin
application.Createform(tform2, form2);
form2.visible:=true;
form1.Hide;
end;
end.
Текст модуля “Сравнение методов”
Form2: TForm2;
s:array of string;
p,q:integer;
implementation
uses Unit1;
{$R *.dfm}
//
procedure TForm2.Button1Click(Sender: TObject);
var a,a1:mass;
st,fn,freq:int64;
T1,T2:real;
begin
n1:=strtoint(edit1.Text);
n2:=strtoint(edit2.Text);
d:=strtoint(edit3.Text);
Progressbar1.Max:=n2;
SetLength(a,n2+1);
SetLength(a1,n2+1);
q:=round((n2-n1)/d)+1;
SetLength(s,q+1);
p:=1;
randomize;
while n1<=n2 do
begin
queryperformancefrequency(freq);
for i:=1 to n1 do
begin
a[i]:=random(2001)-1000;
a1[i]:=a[i];
end;
queryperformancecounter(st);
queryperformancecounter(fn);
T1:=(fn-st)/freq*1000;
queryperformancecounter(st);
Unit1.prostvst(n1,a1);
queryperformancecounter(fn);
T2:=(fn-st)/freq*1000;
s[p]:='Количество элементов '+inttostr(n1)+' время методом пузырька '+inttostr(round(T1))+' мс время методом простых вставок '+inttostr(round(T2))+' мс';
Series1.AddXY(n1,T1);
Series2.AddXY(n1,T2);
Progressbar1.Position:=n1;
p:=p+1;
n1:=n1+d;
end;
end;
// Процедура сохранения иследования массива в текстовый файл
procedure TForm2.Button2Click(Sender: TObject);