IPB
ЛогинПароль:

> Внимание!

1. Пользуйтесь тегами кода. - [code] ... [/code]
2. Точно указывайте язык, название и версию компилятора (интерпретатора).
3. Название темы должно быть информативным.
В описании темы указываем язык!!!

Наладить общение поможет, если вы подпишитесь по почте на новые темы в этом форуме.

> Время сортировки,таймер, С++
сообщение
Сообщение #1


Знаток
****

Группа: Пользователи
Сообщений: 306
Пол: Мужской
Реальное имя: Евгений

Репутация: -  0  +


Вот программа, задача которой сортировать массив тремя способами(метод пузырька, вставки, переборки), при этом каждый метод сортировки прогоняется 100 раз, засекается время и считается среднее время.

#include<iostream>
#include<conio.h>
#include<windows.h>

using namespace std;

void BS(int a[], long size)
{
long i,j;
int x;

for(i=0;i<size;i++)
{
for(j=size-1;j >i;j--)
{
if (a[j-1]>a[j])
{
x=a[j-1];
a[j-1]=a[j];
a[j]=x;
}
}

}
}


void IS(int a[], long size)
{
int x;
long i, j;

for (i=0;i<size;i++)
{
x=a[i];

for (j=i-1;j>=0&&a[j]>x;j--)
a[j+1]=a[j];
a[j+1]=x;


}
}

void CS(int a[], long size)
{
long i,j,k;
int x;

for(i=0;i<size;i++)
{
k=i;
x=a[i];

for( j=i+1;j<size;j++)
if (a[j]<x)
{
k=j;
x=a[j];
}

a[k]=a[i];
a[i]=x;
}
}

void Message()
{
cout<<endl;
cout<<"Please, choose the method of sorting massive!"<<endl<<endl;

cout<<"1. BubbleSort "<<endl;
cout<<" 2. ChoiceSort "<<endl;
cout<<" 3. InsertSort "<<endl<<endl;;
cout<<"Enter 'ESC' for Exit!"<<endl<<endl;
}

int main() {

int ch,size;

cout<<"Please, enter the size of massive to sort!"<<endl;
cin>>size;

int *a = new int[size];
cout<<"Massive of rand elements:";
for(int i=0;i<size;i++)
{
a[i]=rand()%100;
}

for(int i=0;i<size;i++)
{
cout<<a[i]<<" ";
}

cout << endl;

while (ch !=27)

{
Message();
ch = getch();

switch(ch)

{ case 49:

{ float time=GetTickCount();

for(int j=0; j<100; j++)
BS(a, size);

time=GetTickCount()-time;

cout<<"Using BubbleSort: ";
for(int i=0; i<size;i++)
{
cout<<a[i]<<" ";
}

cout<<endl;
cout<<"time = "<<time/100<<endl;

}

break;

case 50:

{ float time=GetTickCount();

for(int j=0; j<100; j++)
CS(a, size);

time=GetTickCount()-time;

cout<<"Using ChoiceSort: ";
for(int i=0; i<size;i++)
{
cout<<a[i]<<" ";
}

cout<<endl;
cout<<"time = "<<time/100<<endl;

}

break;

case 51:

{ float time=GetTickCount();

for(int j=0; j<100; j++)
IS(a, size);

time=GetTickCount()-time;

cout<<"Using IsertSort: ";
for(int i=0; i<size;i++)
{
cout<<a[i]<<" ";
}

cout<<endl;
cout<<"time = "<<time/100<<endl;

}

break;
}
}
delete a;
}




Столкнулся с тем, что при размерах массивов достаточно маленьких( ну там 10, 100) переменная time выдает 0, это в принципе понятно-метод быстро справляется со своей задачей, но всё-таки как сделать, чтоб выводилось хоть какое-нибудь значение time, даже на маленьких размерах массивов.

Сообщение отредактировано: volvo -
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

Сообщений в этой теме


 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 





- Текстовая версия 26.04.2024 10:44
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name