S
SunnyXD
Здравствуйте! Нам тут задали задачку на программировании. Все реализовала а вот с таймером проблема получается.
Задача: реализовать алгоритм быстрой сортировки рекурсивным способом. при этом последовательность чисел взять из файла и измерить время выполнения сортировки.
В программе из файла считывается в массив неупорядоченная последовательность 4000 чисел, а затем упорядочивается. Я запускаю таймер перед началом выполнения упорядочивания и останавливаю после завершения упорядочивания, а результат выводится 0...(
может я что то не так делаю?почему время работы функции упорядочивания=0? я просто новичок в С++. Вот полный листинг программы
Задача: реализовать алгоритм быстрой сортировки рекурсивным способом. при этом последовательность чисел взять из файла и измерить время выполнения сортировки.
В программе из файла считывается в массив неупорядоченная последовательность 4000 чисел, а затем упорядочивается. Я запускаю таймер перед началом выполнения упорядочивания и останавливаю после завершения упорядочивания, а результат выводится 0...(
может я что то не так делаю?почему время работы функции упорядочивания=0? я просто новичок в С++. Вот полный листинг программы
Код:
#include <clx.h>
#pragma hdrstop
#include <iostream.h>
#include <fstream.h>
#include <string.h>
#include <windows.h>
#pragma argsused
using namespace std;
template<class T>
void quickSortR(T* a, long N) {
long i = 0, j = N;
T temp, p;
p = a[ N>>1 ];
do
{
while ( a[i] < p ) i++;
while ( a[j] > p ) j--;
if (i <= j)
{
temp = a[i]; a[i] = a[j]; a[j] = temp;
i++; j--;
}
}
while ( i<=j );
if ( j > 0 ) quickSortR(a, j);
if ( N > i ) quickSortR(a+i, N-i);
}
int main()
{
char ch[65], c;
int count;
ifstream in;
in.open("number.txt");
int A[4000];
int i=0;
in.getline(ch, sizeof(ch));
while (!in.eof())
{
A[i]=atoi(ch);
in.getline(ch, sizeof(ch));
i++;
count=i;
}
in.close();
int e=count-1;
int start=GetTickCount(); //запуск таймера
quickSortR(A,e); //сортировка массива из 4000 чисел
int end=GetTickCount(); //остановка таймера
int res=end-start; //вычисление временного интервала выполнения сортировки
for (int i=0; i<count; i++) {cout<<A[i]<<"; ";}
cout<<" "<<endl<<"Work time="<<res; //вывод временного интервала (собственно он и равен 0)
cin>>c;
}