Иследование методов сортировки "Метод пузырька" и "Метод простых вставок"

Автор работы: Пользователь скрыл имя, 28 Февраля 2011 в 13:45, контрольная работа

Описание работы

Целью выполнения курсового проектирования было реализовать алгоритмы сортировки одномерных массивов (метод пузырька и метод простых вставок), и исследование каждого метода сортировки массива.

Содержание работы

Введение……………………………………………………...4
Постановка задачи……………………………………………6
Рабочее проектирование……………………………………..8
Методы сортировок…………………………………………..12
Общее
Метод "Пузырька"
Метод "Простых вставок.
Выводы……………………………………………………….16

Файлы: 1 файл

документация.doc

— 351.00 Кб (Скачать файл)

Последним пунктом меню является меню “Спрвака” в этом меню содержится справочная информация по приложению.

      Под меню располагается рабочая область, которая делится на две части: ввод массива и операции над ним, и отображение отсортированного 

 и  исходного массива в виде диаграммы. В первой части кнопка “получить массив” полностью дублирует кнопку в меню с таким же названием,при нажатии по кнопке  “Сортировать”, выбранный массив сортируется выбранным методом сортировки. При нажатии по кнопке “Отчистить” рабочее поле отчишяется  для повторной сортировки. Кнопка “Сохранить” дублирует пункт меню “Сохранить массив”. Кнопка на рабочем поле “Сравнение методов сортировки” так же дублирует пункт меню “Сравнение методов”.

      Системные требования: Pentium 133, 16 MB RAM, 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);

      var name:string;

      f:textfile;

      begin

Информация о работе Иследование методов сортировки "Метод пузырька" и "Метод простых вставок"