Смекни!
smekni.com

Иследование методов сортировки Метод пузырька и Метод простых вставок (стр. 3 из 4)

Алгоритм метода простых вставок использует прием котрым пользуется игрок в карты при сортировки только что разданной колоды: очередная карта вставляется между уже упорядоченными ранее.

Описания метода простых вставок: файл подлежащий сортировке, в общем случае состоит из элементов- записей, включающих информационную часть и ключи, по которым производятся упорядочение по возростанию. Поскольку информационная часть почти не влияет на процесс сортировки, предпологаем что файлы используемые в примерах, состоят только из элементов-ключей, а информационная часть записей.

4 ВЫВОДЫ

В ходе выполнения данного курсового проекта были разработана программа на языке высокого уровня Delphi 7. А также изучены возможности данного языка.

Систематизированы и закреплены практические навыки использования ЭВМ, программного обеспечения, существующих средств обслуживания системных программистов, а также теоретические знания по основным разделам курса "Объектно-ориентированного программирования". Основное внимание уделено изучению современных методов защиты информации, способов проектирования приложений, объектно-ориентированному и системному программированию.

При выполнении курсового проекта произведено знакомство с реферативными журналами и другими информационными источниками по объектно-ориентированному и системному программированию с целью анализа состояния решаемой задачи.

Получены практические навыки работы в средеDelphi 7.

ПРИЛОЖЕНИЕ А

Формы программы

На рисунке 1.1 изображено главное меню программы:

Рис 1.1

На рисунке 1.2 показано окно сравнения методов сортировки:

Рис. 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

begin

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

if (a[j+1]<a[j]) then

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;

//вызовфункцийpuzerek иprostvst

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;

if name='' then showmessage('Невыбранфайлдлясохранения') else

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

Form1.Button1Click(Button1);

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:='';

Series1.Clear;

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;

n1,n2,d,i:integer;

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);

Unit1.puzerek(n1,a);

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);