Программирование

Автор: Пользователь скрыл имя, 24 Февраля 2013 в 10:04, курсовая работа

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

ЗАДАНИЕ: Упорядочить массив чисел в диапазоне от 1 до 100000 по убыванию и возрастанию методом сортировки простых вставок.
ЦЕЛЬ РАБОТЫ: разработать блок-схему алгоритма метода сортировки простыми вставками, создать схему программы, составить и протестировать программу на языке высокого уровня Delphi, получить результаты сортировки времени и скорости в зависимости от количества вводимых символов, построить графики зависимости в промежутках: [1 … 300], [300 … 5 000], [5 000 ... 10 000]

Содержание

1. ОПИСАНИЕ ПЕРЕМЕННЫХ И ПРОЦЕДУР 2
2. ВВЕДЕНИЕ 3
3. ТЕОРЕТИЧЕСКАЯ ЧАСТЬ 4
Сортировка простыми вставками 6
Метод последовательного поиска в упорядоченной таблице 8
4. ПРАКТИЧЕСКАЯ ЧАСТЬ 9
5. ЛИСТИНГ ПРОГРАММЫ 14
6. ИНТЕРФЕЙС ПРОГРАММЫ 17
7. ТАБЛИЦЫ РЕЗУЛЬТАТОВ 18
8. ЗАКЛЮЧЕНИЕ 21

Работа содержит 1 файл

оформление.docx

— 169.96 Кб (Скачать)

var

  i,j,x,k : Integer;

  str: AnsiString;

begin

  x := StrToInt(Form1.edt4.Text);

  k:=0;

  i:=1;

  while((i<=count) and (x>=a[i])) do

  begin

    if(x=a[i])then begin k:=k+1; str:=str+' '+IntToStr(i); end;

    i:=i+1;

  end;

  if(k=0)then str :='Нет такого элемента';

  Form1.edt7.Text:=IntToStr(k);

  Result:= str;

end;

function FindDec(a:array of Integer):AnsiString;

var

  i,j,x,k : Integer;

  str: AnsiString;

begin

  x := StrToInt(Form1.edt4.Text);

  k:=0;

  i:=1;

  while((i<=count) and (x<=a[i])) do

  begin

    if(x=a[i])then begin k:=k+1; str:=str+' '+IntToStr(i); end;

    i:=i+1;

  end;

  Form1.edt7.Text:=IntToStr(k);

  if(k=0)then str :='Нет такого элемента';

  Result:= str;

end;

procedure TForm1.btn1Click(Sender: TObject);

var range,i:Integer;

a:array of Integer;

d1: TDateTime;

begin

  if((Length(edt1.Text)>0) and (Length(edt2.Text)>0)) then

  begin

      count := StrToInt(edt1.Text);

      range := StrToInt(edt2.Text);

      btn2.Enabled:=True;

      SetLength(a,count+1);

      Randomize;

      strngrd1.ColCount := count;

      strngrd2.ColCount := count;

      strngrd3.ColCount := count;

      for i := 1 to count do strngrd1.Cells[i-1,0] := IntToStr(Random(range));

      for i := 1 to count do a[i]:= StrToInt(strngrd1.Cells[i-1,0]);

      d1:=Now;

      SortToInc(a);

      SortToDec(a);

      edt3.Text:=FloatToStr(MilliSecondsBetween(d1,Now))+' ms';

  end;

end;

 

procedure TForm1.btn2Click(Sender: TObject);

var

i :Integer;

a:array of Integer;

d1: TDateTime;

begin

  if(Length(edt4.Text)>0)then

  begin

    SetLength(a,count+1);

    for i := 1 to count do a[i]:= StrToInt(strngrd2.Cells[i-1,0]);

    d1:=Now;

    edt5.Text:=FindInc(a);

    for i := 1 to count do a[i]:= StrToInt(strngrd3.Cells[i-1,0]);

    edt8.Text:=FloatToStr(MilliSecondsBetween(d1,Now))+' ms';

    edt6.Text:=FindDec(a);

 

  end;

end;

end.

 

 

 

  1. ИНТЕРФЕЙС ПРОГРАММЫ

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

  1. ТАБЛИЦЫ РЕЗУЛЬТАТОВ

1) 10 – 300 элементов:

Кол. Элементов

время

скорость

10

0,017

588,2352941

50

0,083

602,4096386

100

0,159

628,9308176

150

0,22

681,8181818

200

0,3

666,6666667

250

0,42

595,2380952

300

0,48

625


   
     

 

   

 

   

   
     
     
     

2) 300-5000 элементов

 

Кол. Элементов

время

скорость

300

0,48

625

1100

1,6

687,5

2000

3,1

645,1612903

2900

4,7

617,0212766

3800

5,6

678,5714286

4700

6,3

746,031746

5000

7,8

641,025641


 

 

 

 

 

3) 5000-10000 элементов

 

Кол. Элементов

время

скорость

5000

7,8

641,025641

5900

9,4

627,6595745

6800

10,1

673,2673267

7700

13,9

553,9568345

8600

15,6

551,2820513

9500

20,3

467,9802956

10000

23,4

427,3504274


 

 

 

 

 

 

  1. ЗАКЛЮЧЕНИЕ

Важным свойством алгоритма  является его сфера применения. Здесь  основных позиций две:

  • внутренние сортировки работают с данным в оперативной памяти с произвольным доступом;
  • внешние сортировки упорядочивают информацию, расположенную на внешних носителях. Это накладывает некоторые дополнительные ограничения на алгоритм:
  • доступ к носителю осуществляется последовательным образом: в каждый момент времени можно считать или записать только элемент, следующий за текущим,
  • объем данных не позволяет им разместиться в ОЗУ.
  • Доступ к данным на носителе производится намного медленнее, чем операции с оперативной памятью.

Данный класс алгоритмов делится на два основных подкласса:

Внутренняя сортировка оперирует  с массивами, целиком, умещающимися в оперативной памяти с произвольным доступом к любой ячейке. Данные обычно сортируются на том же месте, без дополнительных затрат.

Внешняя сортировка оперирует  с запоминающими устройствами большого объема, но с доступом не произвольным, а последовательным (сортировка файлов), т.е. в данный момент только один элемент, а затраты на перемотку по сравнению  с памятью неоправданно велики. Это  приводит к специальным методам  сортировки, обычно использующим дополнительное дисковое пространство.

При решении задачи сортировки обычно выдвигается требование минимального использования дополнительной памяти, из которого вытекает недопустимость применения дополнительных массивов.

Для оценки быстродействия алгоритмов различных методов сортировки, как правило, используют два показателя:

количество присваиваний;

количество сравнений.

 

 

 

 

СПИСОК ИСПОЛЬЗУЕМЫХ ИСТОЧНИКОВ

 

1. Кнут Д.Э. Искусство программирования, том 3. Сортировка и поиск, 2-е изд.: Пер с англ. – М.: Издательский дом   “Вильямс”,  2001. – 832 с.: ил.

2. Марков А.С., Милов М.П.., Пеледов Г.В.: Программное обеспечение  ЭВМ.кн.11, 1995. -356 с.: ил.

3. Фаронов В.В. Турбо-Паскаль  (в 3 книгах). - М.: "МВТУ-ФЕСТО ДИДАКТИК", 1992-1993.

4. Прайс Д. Программирование  на языке Паскаль: Практическое  руководство. Пер. с англ. - М.: Мир. 1987

 

 


Информация о работе Программирование