Анализ методов сортировки одномерного массива

void qqsort( int v[], int left, int right)

{

int i,last;

delay(1);

void swap( int v[], int i, int j);

if(left>=right) /*ничего не делается если*/

return; /* в массиве менее двух эл-тов */

swap(v,left,(left+right)/2); /*делящий эл-нт переносится в v[0]*/

last=left;

for(i=left+1;i<=right;i++) /*деление на части*/

if(v[i]<v[left])swap(v,++last,i);

swap(v,left,last); /*перезапоминается делящий элемент*/

qqsort(v,left,last-1);

qqsort(v,last+1,right);

}

void swap( int v[], int i, int j)

{

long int temp;

temp=v[i];

v[i]=v[j];

v[j]=temp;

}

/*SRECMG -- РЕКУРСИВНАЯ СОРТИРОВКА СЛИЯНИЕМ*/

void srecmg(a,n)

int a[],n;

{

void merge( int*, int, int);

int i;

delay(1);

if(n>1)

{i=n/2;srecmg(a,i);srecmg(a+i,n-i);merge(a,i,n);}

}

/*merge--слияние двух подсписков*/

#define MAX(x,y) ((y)<(x)?(x):(y))

void merge( int*w, int l1, int l2)

{

int*a,*pa,*pb,i;

a=( int*)calloc(l2+2,sizeof( int));

pa=a;pb=a+l1+1;

for(i=0;i<l1;i++) *pa++=w[i];

for(i=l1;i<l2;i++) *pb++=w[i];

*pa=*pb=MAX(w[l1-1],w[l2-1])+1;

pa=a;pb=a+l1+1;

for(i=0;i<l2;i++)

w[i]=(*pa<*pb?*pa++:*pb++);

free(a);

}

#define ww 700

//-------< Функция вызова разных методов >-------

file()

{ void qqsort( int *, int,int);

void srecmg( int*, int);

double simvol[2];

int s;

clock_t start,start2,end,end2; int t=0;

int gener1[ww],gener2[ww]; //Генератор случайных чисел

randomize(); //Устанавливает генератор в 0

for ( s=0 ; s < ww ; s++)

{ gener1[s]= ( rand()%100 ); // rand()-функция генератора

gener2[s] =gener1[s];

}

{ start=clock();

qqsort(gener1,0,ww-1);

end=clock();

simvol[0] = ((end - start)/CLK_TCK);

}

{ start2 =clock();

srecmg(gener2,ww);

end2=clock();

simvol[1] = ((end2 - start2)/CLK_TCK);

}

grafix(simvol); // Вызов функции построения гистограмм

windows(1);

return 0;

}

//-------------------< Меню >--------------------

void main()

{

char press;

windows(1);

while (1)

{

press = getch(); // Опрос клавиатуры

switch(press)

{

case 59: help(); break; // Вызов помоши

case 60: file(); break; // Запуск гистограммы

case 68: { // Выход из программы

window(1, 1, 80, 25);

textbackground(BLACK);

clrscr();

exit(1);

} } }}

Приложение 2

КОНТРОЛЬНЫЙ ПРИМЕР ВЫПОЛНЕНИЯ ПРОГРАММЫ

В качестве примера возьмём исходный файл “Test.exe” и запустим его . На экране появляется окно собщения о наличии необходимых файлов. Для продолжения выполнения программы пользователь нажимает клавишу F2 , в результате чего на экране появляется гистограмма , характеризующая скорость выполнения сортировки массивов. Воспользовавшись клавишей Esc , пользователь выходит с графического режима в режим отображения меню. При нажатии пользователем клавиши F1 на экране появляется окно помощи которое содержит название программы, данные о разработчике, назначение, функциональные клавиши используемые в программе, и возможные проблемы при ее выполнении.Нажатие клавиши Esc приводит к закрытию окна помощи. Для выхода из программы пользователь должен нажать клавишу F10.

Пример выводимой гистограммы.

Страница:  1  2  3  4  5  6  7 


Другие рефераты на тему «Программирование, компьютеры и кибернетика»:

Поиск рефератов

Последние рефераты раздела

Copyright © 2010-2024 - www.refsru.com - рефераты, курсовые и дипломные работы