Лістинг програми з коментарями 


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Лістинг програми з коментарями



 

unit unitSort3D;, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,,StdCtrls,UnitDop,sort3DArrayDop;D = class(TForm): TLabel;: TLabel;: TMemo;: TEdit;: TButton;: TMemo;: TEdit;: TEdit;: TButton;: TButton;: TButton;: TGroupBox;: TLabel;: TLabel;: TLabel;: TGroupBox;: TLabel;: TLabel;: TLabel;FormCreate(Sender: TObject);btnCreateTestArraysClick(Sender: TObject);btnLaunchSortClick(Sender: TObject);btnCompareSortingbyOperationsClick(Sender: TObject);btnCalculateForAlternateSizeClick(Sender: TObject);

{ Private declarations }

{ Public declarations };D: TfrmSort3D;,ad1,ad2,ad3:TArrayDyn;

{$R *.dfm}TfrmSort3D.FormCreate(Sender: TObject);.Text:='100';.Text:='100';.Text:='100';;TfrmSort3D.btnCreateTestArraysClick(Sender: TObject);,j,k,sizeN,sizeM,sizeP: integer;

//Очистити поле результатів.clear;.clear;:=StrToInt(edtSizeN.Text);:=StrToInt(edtSizeM.Text);:=StrToInt(edtSizeP.Text);(ad,sizeN,sizeM,sizeP);(ad1,sizeN,sizeM,sizeP);;i:=0 to sizeN-1 doj:=0 to sizeM-1 dok:=0 to sizeP-1 do[i,j,k]:=Random(100);[i,j,k]:= ad[i,j,k];;.Lines.Append('Масив ' +InttoStr(SizeN)+'x' +InttoStr(SizeM)+'x' +InttoStr(SizeP)+ ' створено');(sizeN<5) and (sizeM<5) and (sizeP<5) then(ad,sizeN,sizeM,sizeP,memSortDetails);(ad1,sizeN,sizeM,sizeP,memSortDetails);;;TfrmSort3D.btnLaunchSortClick(Sender: TObject);sizeN,sizeM,sizeP: integer;

//Зчитати розмір масиву:=StrToInt(edtSizeN.Text);:=StrToInt(edtSizeM.Text);:=StrToInt(edtSizeP.Text);

//запускаємо процедуру сортування та виведення масиву(ad,ad1,sizeN,sizeM,sizeP,memSortResults,memSortDetails);TfrmSort3D.btnCompareSortingbyOperationsClick(Sender: TObject);i,j,k,sizeN,sizeM,sizeP: integer;,pCountSelection,pCountShaker:int64;

//Зчитати розмір масиву:=StrToInt(edtSizeN.Text);:=StrToInt(edtSizeM.Text);:=StrToInt(edtSizeP.Text);

//вивести заголовок результатів.Lines.Append(

 

Порівняння методів сортувань за кількістю переміщень'

 

+InttoStr(sizeN) + 'x'+InttoStr(sizeM)+'x'+InttoStr(sizeP));.Lines.Append('Вставка |Обмін| Шейкер');:=0;:=0;:=0;

//зчитати масив ad1 з adi:=0 to sizeN-1 doj:=0 to sizeM-1 dok:=0 to sizeP-1 do[i,j,k]:=ad[i,j,k];

{==============

Процеси сортування}

//Сортувати невпорядкований масив вставкою із підрахунком кількості переміщень(ad1,pCountByInsertion,sizeN,sizeM,sizeP);

//зчитати масив ad1 з adi:=0 to sizeN-1 doj:=0 to sizeM-1 dok:=0 to sizeP-1 do[i,j,k]:=ad[i,j,k];

//Сортувати невпорядкований масив вибором із підрахунком кількості переміщень(ad1,pCountSelection,sizeN,sizeM,sizeP);

//зчитати масив ad1 з adi:=0 to sizeN-1 doj:=0 to sizeM-1 dok:=0 to sizeP-1 do[i,j,k]:=ad[i,j,k];

//Сортувати невпорядкований масив шейкером із підрахунком кількості переміщень(ad1,pCountShaker,sizeN,sizeM,sizeP);.Lines.Append('----Переміщень для випадкового масиву-------');.Lines.Append(format(' %1.4d %1.4d %1.4d ',

[pCountByInsertion,pCountSelection,pCountShaker]));:=0;:=0;:=0;

//Сортувати впорядкований масив вставкою із підрахунком кількості переміщень(ad1,pCountByInsertion,sizeN,sizeM,sizeP);

//Сортувати впорядкований масив вибором із підрахунком кількості переміщень(ad1,pCountSelection,sizeN,sizeM,sizeP);

//Сортувати впорядкований масив шейкером із підрахунком кількості переміщень(ad1,pCountShaker,sizeN,sizeM,sizeP);.Lines.Append('----Переміщень для відсортованого масиву-------');.Lines.Append(format(' %1.4d %1.4d %1.4d ',

[pCountByInsertion,pCountSelection,pCountShaker]));:=0;:=0;:=0;

//Сортувати зворотно впорядкований масив вставкою із підрахунком кількості переміщень(ad1,sizeN,sizeM,sizeP);(ad1,pCountByInsertion,sizeN,sizeM,sizeP);

//Сортувати зворотно впорядкований масив вибором із підрахунком кількості переміщень(ad1,sizeN,sizeM,sizeP);(ad1,pCountSelection,sizeN,sizeM,sizeP);

//Сортувати зворотно впорядкований масив шейкером із підрахунком кількості переміщень(ad1,sizeN,sizeM,sizeP);(ad1,pCountShaker,sizeN,sizeM,sizeP);.Lines.Append('--Переміщень для зворотно відсортованого масиву----');.Lines.Append(format(' %1.4d %1.4d %1.4d ',

[pCountByInsertion,pCountSelection,pCountShaker]));;TfrmSort3D.btnCalculateForAlternateSizeClick(Sender: TObject);sizeN,sizeM,sizeP,,sizeMad2,sizePad2,,j,k,j_ad2,k_ad2:integer;

//зчитати розмір масиву:=StrToInt(edtSizeN.Text);:=StrToInt(edtSizeM.Text);:=StrToInt(edtSizeP.Text);

//задати довжину для масивів:=sizeN;:=sizeM div 2;:=sizeP*2;(ad2,sizeNad2,sizeMad2,sizePad2);(ad3,sizeNad2,sizeMad2,sizePad2);

//зчитати массив з ad в ad2 и ad3 з урахуванням зміни геометричних розмірів перерізуi:=0 to sizeN-1 do_ad2:=0;j:=0 to sizeM-1 doj mod 2 = 0k_ad2:=0k_ad2:=sizeP;k:=0 to sizeP-1 do[i,j_ad2,k_ad2]:=ad[i,j,k];[i,j_ad2,k_ad2]:=ad[i,j,k];_ad2:=k_ad2+1;;j mod 2 = 1j_ad2:=j_ad2+1;;;.Lines.Append('Масив набув нових геометричних розмірів:'+(sizeNad2)+ 'x'+ IntToStr(sizeMad2)+'x' +IntToStr(sizePad2));

//Якщо масив невеликий, відображаємо його(sizeNad2<11) and (sizeMad2 <11) and (sizePad2<11) then.Lines.Append('Новий масив:'+ IntToStr(sizeNad2)+ 'x'+(sizeMad2)+'x' +IntToStr(sizePad2));(ad2,sizeNad2,sizeMad2,sizePad2,memSortDetails);;

//запускаємо процедуру сортування та виведення масиву(ad2,ad3,sizeNad2,sizeMad2,sizePad2,memSortResults,memSortDetails);

//задать длину для массивов:=sizeN;:=sizeM*2;:=sizeP div 2;(ad2,sizeNad2,sizeMad2,sizePad2);(ad3,sizeNad2,sizeMad2,sizePad2);

//зчитати массив з ad в ad2 и ad3 з урахуванням зміни геометричних розмірів перерізуi:=0 to sizeN-1 do_ad2:=0;j:=0 to sizeM-1 do_ad2:=0;k:=0 to sizeP-1 do[i,j_ad2,k_ad2]:=ad[i,j,k];[i,j_ad2,k_ad2]:=ad[i,j,k];

//if row ended atart from next rowk=sizePad2-1j_ad2:=j_ad2+1;_ad2:=0;_ad2:=k_ad2+1;;_ad2:=j_ad2+1;;.Lines.Append('Масив набув нових геометричних розмірів:'+(sizeNad2)+ 'x'+ IntToStr(sizeMad2)+'x' +IntToStr(sizePad2));

//Якщо масив невеликий, відображаємо його(sizeNad2<50) and (sizeMad2 <50) and (sizePad2<50) then.Lines.Append('Новый массив:'+ IntToStr(sizeNad2)+ 'x'+(sizeMad2)+'x' +IntToStr(sizePad2));(ad2,sizeNad2,sizeMad2,sizePad2,memSortDetails);;

//запускаємо процедуру сортування та виведення масиву(ad2,ad3,sizeNad2,sizeMad2,sizePad2,memSortResults,memSortDetails);.

 

Допоміжний модуль:

sort3DArrayDop;, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,, StdCtrls;D = Array[0..1000000] of integer;= Array of Array of Array of integer;showArrayDyninMemo(a: TArrayDyn;sizeN,sizeM,sizeP: integer;m: Tmemo);sortArrayAndShowResultsInMemo(a,a1: TArrayDyn;sizeN,sizeM,sizeP: integer;memSortResults,memSortDetails: Tmemo);sortDynByInsertion(var ad:TArrayDyn; sizeN,sizeM,sizeP: integer);sortDynByInsertionReverse(var ad:TArrayDyn; sizeN,sizeM,sizeP: integer);sortDynSelection(var ad:TArrayDyn; sizeN,sizeM,sizeP: integer);sortDynSelectionReverse(var ad:TArrayDyn; sizeN,sizeM,sizeP: integer);sortDynShaker(var ad:TArrayDyn; sizeN,sizeM,sizeP: integer);sortDynShakerReverse(var ad:TArrayDyn; sizeN,sizeM,sizeP: integer);sortDynByInsertionCount(var ad:TArrayDyn; var pCount:int64; sizeN,sizeM,sizeP: integer);sortDynSelectionCount(var ad:TArrayDyn; var pCount:int64; sizeN,sizeM,sizeP: integer);sortDynShakerCount(var ad:TArrayDyn; var pCount:int64; sizeN,sizeM,sizeP: integer);showArrayDyninMemo(a: TArrayDyn;sizeN,sizeM,sizeP: integer;m: Tmemo);i,j,k: integer;: string;i:=0 to sizeN-1 do.lines.append(IntToStr(i));j:=0 to sizeM-1 do:=inttostr(a[i,j,0]);k:=1 to sizeP-1 do:=str+' ' + IntToStr(a[i,j,k]);.lines.append(str);;;;sortArrayAndShowResultsInMemo(a,a1: TArrayDyn;sizeN,sizeM,sizeP: integer;memSortResults,memSortDetails: Tmemo);i,j,k,t1,t2,t,tSumInsertRandom,tSumInsertSorted,tSumInsertSortedReverse,,tSumSelectionSorted,tSumSelectionSortedReverse,,tSumShakerSorted,tSumShakerSortedReverse:integer;

{===============================================

Заголовок результатів}.Lines.Append('Результати сортування массиву' +InttoStr(sizeN) + 'x'+InttoStr(sizeM)+'x'+InttoStr(sizeP));.Lines.Append('Невпорядкований|Впорядкований|Зворотно впорядкований');:=0;:=0;:=0;:=0;:=0;:=0;:=0;:=0;:=0;

//зчитати масив a1 з ai:=0 to sizeN-1 doj:=0 to sizeM-1 dok:=0 to sizeP-1 do[i,j,k]:=a[i,j,k];(sizeN<=10) and (sizeM<=10) and (sizeP<=10)begin.Lines.append('Вихідний невпорядкований масив для сортування вибором');(a1,sizeN,sizeM,sizeP,memSortDetails);.Lines.append('');;

{===========================

Сортувати випадковий масив вибором}:=GetTickCount;(a1,sizeN,sizeM,sizeP);:=GetTickCount;:=t2-t1;:=tSumSelectionRandom+t;(sizeN<=10) and (sizeM<=10) and (sizeP<=10)begin.Lines.append('Відсортований неупорядкований масив для сортування вибором');(a1,sizeN,sizeM,sizeP,memSortDetails);.Lines.append('');;

{====================

сортувати впорядкований масив вибором}:=GetTickCount;(a1,sizeN,sizeM,sizeP);:=GetTickCount;:=t2-t1;:=tSumSelectionSorted+t;(sizeN<=10) and (sizeM<=10) and (sizeP<=10)begin.Lines.append('Впорядкований впорядкований масив для сортування вибором');(a1,sizeN,sizeM,sizeP,memSortDetails);.Lines.append('');;

{=================

Сортувати зворотно впрорядкований масив вибором}(a1,sizeN,sizeM,sizeP);(sizeN<=10) and (sizeM<=10) and (sizeP<=10)begin.Lines.append('Вихідний зворотно впорядкований масив для сортування вибором');(a1,sizeN,sizeM,sizeP,memSortDetails);.Lines.append('');;:=GetTickCount;(a1,sizeN,sizeM,sizeP);:=GetTickCount;:=t2-t1;:=tSumSelectionSortedReverse+t;(sizeN<=10) and (sizeM<=10) and (sizeP<=10)begin.Lines.append('Впорядкований зворотно впорядкований масив для сортування вибором');(a1,sizeN,sizeM,sizeP,memSortDetails);.Lines.append('');;

//зчитуємо масив ad1 з adi:=0 to sizeN-1 doj:=0 to sizeM-1 dok:=0 to sizeP-1 do[i,j,k]:=a[i,j,k];(sizeN<=10) and (sizeM<=10) and (sizeP<=10)begin.Lines.append('Вихідний невпорядкований масив для сортування шейкером');(a1,sizeN,sizeM,sizeP,memSortDetails);.Lines.append('');;

{================

сортувати невпорядкований масив шейкером}:=GetTickCount;(a1,sizeN,sizeM,sizeP);:=GetTickCount;:=t2-t1;:=tSumShakerRandom+t;(sizeN<=10) and (sizeM<=10) and (sizeP<=10)begin.Lines.append('Впорядкований неупорядовкований масив для сортування шейкером');(a1,sizeN,sizeM,sizeP,memSortDetails);.Lines.append('');;

{===============

сортувати впорядкований масив шейкером}:=GetTickCount;(a1,sizeN,sizeM,sizeP);:=GetTickCount;:=t2-t1;:=tSumShakerSorted+t;(sizeN<=10) and (sizeM<=10) and (sizeP<=10)begin.Lines.append('Впорядкований впорядкований масив для сортування шейкером');(a1,sizeN,sizeM,sizeP,memSortDetails);.Lines.append('');;

{==============

сортувати зворотно впорядкований масив шейкером}(a1,sizeN,sizeM,sizeP);(sizeN<=10) and (sizeM<=10) and (sizeP<=10)begin.Lines.append('Вихідний зворотно впорядкований масив для сортування шейкером');(a1,sizeN,sizeM,sizeP,memSortDetails);.Lines.append('');;:=GetTickCount;(a1,sizeN,sizeM,sizeP);:=GetTickCount;:=t2-t1;:=tSumShakerSortedReverse+t;(sizeN<=10) and (sizeM<=10) and (sizeP<=10)begin.Lines.append('Впорядкований зворотно впорядкований масив для сортування вибором');(a1,sizeN,sizeM,sizeP,memSortDetails);.Lines.append('');;

//зчитати масив ad1 з adi:=0 to sizeN-1 doj:=0 to sizeM-1 dok:=0 to sizeP-1 do[i,j,k]:=a[i,j,k];(sizeN<=10) and (sizeM<=10) and (sizeP<=10)begin.Lines.append('Вихідний невпорядкований масив для сортування вставкою');(a1,sizeN,sizeM,sizeP,memSortDetails);.Lines.append('');;

{=============

сортувати невпорядкований масив вставкою}:=GetTickCount;(a1,sizeN,sizeM,sizeP);:=GetTickCount;:=t2-t1;:=tSumInsertRandom+t;(sizeN<=10) and (sizeM<=10) and (sizeP<=10)begin.Lines.append('Відсортований невпорядкований масив для сортування вставкою');(a1,sizeN,sizeM,sizeP,memSortDetails);.Lines.append('');;

{===========

сортувати впорядкований масив вставкою}:=GetTickCount;(a1,sizeN,sizeM,sizeP);:=GetTickCount;:=t2-t1;:=tSumInsertSorted+t;(sizeN<=10) and (sizeM<=10) and (sizeP<=10)begin.Lines.append('Відсортований упорядкований масив для сортування вставкою');(a1,sizeN,sizeM,sizeP,memSortDetails);.Lines.append('');;

{=============

сортувати зворотно впорядкований масив вставкою}(a1,sizeN,sizeM,sizeP);(sizeN<=10) and (sizeM<=10) and (sizeP<=10)begin.Lines.append('Вихідний зворотно впорядкований масив для сортування вставкою');(a1,sizeN,sizeM,sizeP,memSortDetails);.Lines.append('');;:=GetTickCount;(a1,sizeN,sizeM,sizeP);:=GetTickCount;:=t2-t1;:=tSumInsertSortedReverse+t;(sizeN<=10) and (sizeM<=10) and (sizeP<=10)begin.Lines.append('Впорядкований зворотно впорядкований масив для сортування вставкою');(a1,sizeN,sizeM,sizeP,memSortDetails);.Lines.append('');;.Lines.Append('----дані по сортуванню вставкою-------');.Lines.Append(format(' %1.4d %1.4d %1.4d ',

[tSumInsertRandom,tSumInsertSorted,tSumInsertSortedReverse]));.Lines.Append('----дані по сортуванню вибором-------');.Lines.Append(format(' %1.4d %1.4d %1.4d ',

[tSumSelectionRandom, tSumSelectionSorted, tSumSelection Sorted Reverse]));.Lines.Append('----дані по сортуванню шейкром-------');.Lines.Append(format(' %1.4d %1.4d %1.4d ',

[tSumShakerRandom,tSumShakerSorted,tSumShakerSortedReverse]));;

{=====

сортування вставкою перерезів за НЕспаданням сум їх елементів}sortDynByInsertion(var ad:TArrayDyn; sizeN,sizeM,sizeP: integer);a1: TArray1D;,j,k,sum,b,c,l:integer;

//створення одновимірного масиву із сум елементів кожного перерізуi:=0 to sizeN-1 do:=0;j:=0 to sizeM-1 dok:=0 to sizeP-1 do:=sum+ad[i,j,k];;;[i]:=sum;;

//пошук місця вставкиi:=1 to sizeN-1 do:=0;:=a1[i];a1[c]<b do:=c+1;;a1[c]=a1[i] then continuebegin

//зсув елементів одновимірного масивуl:=i downto c+1 do[l]:=a1[l-1];;

//вставка на місце, що звільнилося[c]:=b;

//зсув елементів тривімирного масиву і вставка на місце, що звільнилосяj:=0 to sizeM-1 dok:=0 to sizeP-1 do:=ad[i,j,k];l:=i downto c+1 do[l,j,k]:=ad[l-1,j,k];;[c,j,k]:=b;;;;;

{============

сортування вставкою перерізів за НЕзростанням суми їх елементів}sortDynByInsertionReverse(var ad:TArrayDyn; sizeN,sizeM,sizeP: integer);a1: TArray1D;,j,k,sum,b,c,l:integer;

//створення одновимірного масиву із сум елементів кожного перерізуi:=0 to sizeN-1 do:=0;j:=0 to sizeM-1 dok:=0 to sizeP-1 do:=sum+ad[i,j,k];;;[i]:=sum;;

//пошук місця вставкиi:=1 to sizeN-1 do:=0;:=a1[i];a1[c]>b do:=c+1;;a1[c]=a1[i] then continuebegin

//зсув елементів одновимірного масивуl:=i downto c+1 do[l]:=a1[l-1];;

//вставка на місце, що звільнилося[c]:=b;

//зсув елементів тривімирного масиву і вставка на місце, що звільнилосяj:=0 to sizeM-1 dok:=0 to sizeP-1 do:=ad[i,j,k];l:=i downto c+1 do[l,j,k]:=ad[l-1,j,k];;[c,j,k]:=b;;;;;;

{=================

Сортування вибором із запам'ятовуванням місця останньої перестановки перерізів за НЕспаданням суми їх елементів}sortDynSelection(var ad:TArrayDyn; sizeN,sizeM,sizeP: integer);a1:TArray1D;,j,k,sum,x,y,l:integer;

//створення одновимірного масиву із сум елементів кожного перерізуi:=0 to sizeN-1 do:=0;j:=0 to sizeM-1 dok:=0 to sizeP-1 do:=sum+ad[i,j,k];;;[i]:=sum;;

// процедура сортування методом виборуl:=i+1 to sizeN doa1[l]>a1[i] then

//міняємо місцями елементи одновимірного масиву:=a1[i];[i]:=a1[l];[l]:=x;

//міняємо місцями перерізи тривимірного масивуj:=0 to sizeM-1 dok:=0 to sizeP-1 do:=ad[i,j,k];[i,j,k]:=ad[i+1,j,k];[i+1,j,k]:=y;

{==============

Сортування вибором із запам'ятовуванням місця останньої перестановки перерізів за НЕзростанням суми їх елементів}sortDynSelectionReverse(var ad:TArrayDyn; sizeN,sizeM,sizeP: integer);a1:TArray1D;,j,k,sum,x,y,l,R:integer;

//створення одновимірного масиву із сум елементів кожного перерізуi:=0 to sizeN-1 do:=0;j:=0 to sizeM-1 dok:=0 to sizeP-1 do:=sum+ad[i,j,k];;;[i]:=sum;;

// процедура сортування методом виборуl:=i+1 to sizeN doa1[l]<a1[i] then

//міняємо місцями елементи одновимірного масиву:=a1[i];[i]:=a1[l];[l]:=x;

//міняємо місцями перерізи тривимірного масивуj:=0 to sizeM-1 dok:=0 to sizeP-1 do:=ad[i,j,k];[i,j,k]:=ad[i+1,j,k];[i+1,j,k]:=y;;

{=======

Сортування шейкером перерізів за НЕзростанням суми їх елементів}sortDynShaker(var ad:TArrayDyn; sizeN,sizeM,sizeP: integer);a1: TArray1D;,j,k,sum,x,y,L,R,b:integer;

//створення одновимірного масиву із сум елементів кожного перерізуi:=0 to sizeN-1 do:=0;j:=0 to sizeM-1 dok:=0 to sizeP-1 do:=sum+ad[i,j,k];;;[i]:=sum;;

//зовнішній цикл - поки границі відсортований частин не зійдуться

//L - ліва границя невідсортованої частини

//R - права границя невідсортованої частини:=0; L:=0;R:=sizeN-1;L<R do begini:=L to R-1 doa1[i]>a1[i+1] then //якщо порядок розташування сусідніх елементів порушено

//міняємо місцями елементи одновимірного масиву:=a1[i];[i]:=a1[i+1];[i+1]:=x;

//міняємо місцями перерізи тривимірного масивуj:=0 to sizeM-1 dok:=0 to sizeP-1 do:=ad[i,j,k];[i,j,k]:=ad[i+1,j,k];[i+1,j,k]:=y;;:=i;;:=b;;

//Зворотний прохідi:=R-1 downto L doa1[i]>a1[i+1] then //якщо порядок розташування сусідніх елементів порушено

//міняємо місцями елементи одновимірного масиву:=a1[i];[i]:=a1[i+1];[i+1]:=x;

//міняємо місцями перерізи тривимірного масивуj:=0 to sizeM-1 dok:=0 to sizeP-1 do:=ad[i,j,k];[i,j,k]:=ad[i+1,j,k];[i+1,j,k]:=y;;:=i;;:=b+1;;;;

{========

Сортування шейкером перерізів за НЕспаданням суми їх елементів}sortDynShakerReverse(var ad:TArrayDyn; sizeN,sizeM,sizeP: integer);a1: TArray1D;,j,k,sum,x,y,L,R,b:integer;

//створення одновимірного масиву із сум елементів кожного перерізуi:=0 to sizeN-1 do:=0;j:=0 to sizeM-1 dok:=0 to sizeP-1 do:=sum+ad[i,j,k];;;[i]:=sum;;

//зовнішній цикл - поки границі відсортований частин не зійдуться

//L - ліва границя невідсортованої частини

//R - права границя невідсортованої частини:=0; L:=0;R:=sizeN-1;L<R do begini:=L to R-1 doa1[i]<a1[i+1] then //якщо порядок розташування сусідніх елементів порушено

//міняємо місцями елементи одновимірного масиву:=a1[i];[i]:=a1[i+1];[i+1]:=x;

//міняємо місцями перерізи тривимірного масивуj:=0 to sizeM-1 dok:=0 to sizeP-1 do:=ad[i,j,k];[i,j,k]:=ad[i+1,j,k];[i+1,j,k]:=y;;:=i;;:=b;;

//Зворотний прохідi:=R-1 downto L doa1[i]<a1[i+1] then //якщо порядок розташування сусідніх елементів порушено

//міняємо місцями елементи одновимірного масиву:=a1[i];[i]:=a1[i+1];[i+1]:=x;

//міняємо місцями перерізи тривимірного масивуj:=0 to sizeM-1 dok:=0 to sizeP-1 do:=ad[i,j,k];[i,j,k]:=ad[i+1,j,k];[i+1,j,k]:=y;;:=i;;:=b+1;;;

{==========

 

сортування для глобального масиву із підрахунком кількості операцій

Сортує масив методом вибору так, як задано за варіантом із підрахунком кількості переміщень елементів}

sortDynByInsertionCount(var ad:TArrayDyn; var pCount:int64; sizeN,sizeM,sizeP: integer);a1: TArray1D;,j,k,sum,b,c,l:integer;:=0;

//створення одновимірного масиву із сум елементів кожного перерізуi:=0 to sizeN-1 do:=0;j:=0 to sizeM-1 dok:=0 to sizeP-1 do:=sum+ad[i,j,k];;;[i]:=sum;;i:=1 to sizeN-1 do:=0;:=a1[i];a1[c]<b do:=c+1;;a1[c]=a1[i] then continuebeginl:=i downto c+1 do[l]:=a1[l-1];;[c]:=b;j:=0 to sizeM-1 dok:=0 to sizeP-1 do:=ad[i,j,k];:=pCount+1; //прирощуємо кількість переміщеньl:=i downto c+1 do[l,j,k]:=ad[l-1,j,k];:=pCount+1; //прирощуємо кількість переміщень;[c,j,k]:=b;:=pCount+1; //прирощуємо кількість переміщень;;

{=======

Сортує масив методом вибору так, як задано за варіантом із підрахунком кількості переміщень елементів}sortDynSelectionCount(var ad:TArrayDyn; var pCount:int64; sizeN,sizeM,sizeP: integer);a1:TArray1D;,j,k,sum,x,y,l,R:integer;:=0;

//створення одновимірного масиву із сум елементів кожного перерізуi:=0 to sizeN-1 do:=0;j:=0 to sizeM-1 dok:=0 to sizeP-1 do:=sum+ad[i,j,k];;;[i]:=sum;;:=sizeN-1;R>0 do begin:=0;i:=0 to R-1 doa1[i]>a1[i+1] then:=a1[i];[i]:=a1[i+1];[i+1]:=x;j:=0 to sizeM-1 dok:=0 to sizeP-1 do:=ad[i,j,k];[i,j,k]:=ad[i+1,j,k];[i+1,j,k]:=y;:=pCount+3 //прирощуємо кількість переміщень;:=i+1;;;:=l;;;;

{=====

Сортує масив шейкерним методом так, як задано за варіантом із підрахунком кількості переміщень елементів}sortDynShakerCount(var ad:TArrayDyn; var pCount:int64; sizeN,sizeM,sizeP: integer);a1: TArray1D;,j,k,sum,x,y,L,R,b:integer;:=0;

//створення одновимірного масиву із сум елементів кожного перерізуi:=0 to sizeN-1 do:=0;j:=0 to sizeM-1 dok:=0 to sizeP-1 do:=sum+ad[i,j,k];;;[i]:=sum;;:=0; L:=0;R:=sizeN-1;L<R do begini:=L to R-1 doa1[i]>a1[i+1] then:=a1[i];[i]:=a1[i+1];[i+1]:=x;j:=0 to sizeM-1 dok:=0 to sizeP-1 do:=ad[i,j,k];[i,j,k]:=ad[i+1,j,k];[i+1,j,k]:=y;:=pCount+3; //прирощуємо кількість переміщень;:=i;;:=b;;i:=R-1 downto L doa1[i]>a1[i+1] then:=a1[i];[i]:=a1[i+1];[i+1]:=x;j:=0 to sizeM-1 dok:=0 to sizeP-1 do:=ad[i,j,k];[i,j,k]:=ad[i+1,j,k];[i+1,j,k]:=y;:=pCount+3; //прирощуємо кількість переміщень;:=i;;:=b+1;;;;.

Час сортування

 

Час наведено у «тіках» процесору, він є відносним.

 

Масив 100х100х100

Табл. 4. 1 - Час сортування для масиву 100х100х100

  Невпорядкований Впорядкований Зворотно впорядкований
Дані по сортуванню вставкою 0141 0 0313
Сортування вибором 0016 0 0000
Шейкерне сортування 0250 0 0547

Масив 100х500х500

Табл. 4.2 - Час сортування для масиву 100х500х500



Поделиться:


Последнее изменение этой страницы: 2021-02-07; просмотров: 78; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 18.116.40.53 (0.047 с.)