Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 27.03.2010, 22:32   #1
Serg12
Пользователь
 
Регистрация: 26.10.2009
Сообщений: 28
По умолчанию быстрая сортировка настолько быстрая

организовал быструю сортировку, но не могу отследить время ее выполнения с помощью clock(), скажите пожалуйста это возможно или скорее всего у меня в чем-то ошибка
Serg12 вне форума Ответить с цитированием
Старый 28.03.2010, 14:54   #2
xVxSeRGxVx
Пользователь
 
Регистрация: 28.09.2009
Сообщений: 42
По умолчанию

твоя ошибка в том, что ты код не выложил!!!
xVxSeRGxVx вне форума Ответить с цитированием
Старый 28.03.2010, 16:24   #3
NiCola999
Не
Участник клуба
 
Регистрация: 29.10.2009
Сообщений: 1,456
По умолчанию

Код:
#include <time.h>
.....
size_t t = clock();
// тут чето делаем
cout << "Time: " << (long double) (t-clock())/CLOCKS_PER_SEC;
NiCola999 вне форума Ответить с цитированием
Старый 28.03.2010, 17:26   #4
Serg12
Пользователь
 
Регистрация: 26.10.2009
Сообщений: 28
По умолчанию

(исправляю свою главную ошибку)...
start=clock();
quicksort(1, 9000);
end=clock();
printf("%f\n", ((end-start)/CLK_TCK));
}
void quicksort(int l, int r)
{
int i, j, x, w;
i=l; j=r;
w= (l+r)/2;
x=mas[w];
do
{
while (mas[i]<x) i++;
while (x<mas[j]) j--;
if (i<=j)
{
w=mas[i]; mas[i]=mas[j]; mas[j]=w; i++; j--;
}
}
while (i<j);

if (l<j)
quicksort(l, j);
if (i<r)
quicksort(i, r);
}
время выводится по нулям
Serg12 вне форума Ответить с цитированием
Старый 28.03.2010, 18:01   #5
Serg12
Пользователь
 
Регистрация: 26.10.2009
Сообщений: 28
По умолчанию

писал в borland C++ 3.1, по совету NiCola999 расширил до long double все равно по нулям скорее всего все таки ошибка в коде
Serg12 вне форума Ответить с цитированием
Старый 28.03.2010, 18:47   #6
NiCola999
Не
Участник клуба
 
Регистрация: 29.10.2009
Сообщений: 1,456
По умолчанию

вместо printf , cout напиши...
а вобще у тебя ф-я нифига не сортирует)

Последний раз редактировалось NiCola999; 28.03.2010 в 18:51.
NiCola999 вне форума Ответить с цитированием
Старый 28.03.2010, 19:49   #7
Serg12
Пользователь
 
Регистрация: 26.10.2009
Сообщений: 28
По умолчанию

я после сортировки вывел массив, вроде сортирует
Serg12 вне форума Ответить с цитированием
Старый 28.03.2010, 20:30   #8
[CODER]
Форумчанин
 
Аватар для [CODER]
 
Регистрация: 02.02.2010
Сообщений: 305
По умолчанию

Код:
#include <iostream.h>
   #include <dos.h>
   #include <fstream.h>
//--------------------------------------------------------------------
 int array[100000];
//-----------ФУНКЦИЯ БЫСТОЙ СОРТИРОВКИ--------
void quicksort(long High, long Low)
{
	long i, j;
	short p, temp;
	i=Low;
	j=High;
	p=array[(Low+High)/2];
	do
	{
		while (array[i]<p) i++;
		while (array[j]>p)  j--;
		if (i<=j) {
		   temp=array[i];
		   array[i]=array[j];
		   array[j]=temp;
		   i++;
		   j--;
		}
	}
		while (i<=j);
		if (j>Low)    quicksort(j, Low);
		if (High>i)   quicksort(High, i);
}
//-------------------КОНЕЦ ФУНКЦИИ-------------------------
main()
{
ofstream output ("D:/Data.txt", ios::out);
struct time t;
int i, j, temp, size=100000, hour, min, sec, hund;
   while(size>999) {
	   printf("MaccuB u3 %d e/\\emeHToB:",size);
	   output<<"\nBxogHbIe gaHHbIe:\n";
		for (i = 0; i < size; i++) {
			array[i]=random(99);
		//	output<<"["<<i+1<<"]="<<array[i]<<";    ";
		}
	   gettime(&t);
  printf("\nStart: %2d:%02d:%02d:%02d\n",t.ti_hour,t.ti_min,t.ti_sec,t.ti_hund);
//----------------СОРТИРОВКА--------------------
   quicksort(size-1, 0);
//-------------------КОНЕЦ--------------------------
	  gettime(&t);
	   output<<"\nPe3y/\bTaT copTupoBku:\n";
	   for (i = 0; i < size; i++)
		 output<<"   ["<<i+1<<"]="<<array[i]<<";";
	  printf("Finish: %2d:%02d:%02d.%02d",t.ti_hour,t.ti_min,t.ti_sec,t.ti_hund);
	  printf("\n---------------------------\n\n");
	  size-=10000;
	}
 output.close();
 printf("Save in file C:\data.txt\n");
 system("pause");
 return 0;
}
Для сравнения вставь
Код:
flag=0;
	while (flag==0)  {
		flag=1;
		for (i=0; i<n-1; i++)  {
			if (mas[i+1]<mas[i]) {
			   flag=0;
			   temp=mas[i+1];
			   mas[i+1]=mas[i];
			   mas[i]=temp;
			}
		}
	}
Skype: CODERua

Последний раз редактировалось [CODER]; 28.03.2010 в 21:47.
[CODER] вне форума Ответить с цитированием
Старый 28.03.2010, 21:31   #9
RUSt88
Участник клуба
 
Регистрация: 29.12.2009
Сообщений: 1,166
По умолчанию

The GetTickCount function retrieves the number of milliseconds that have elapsed since Windows was started.

DWORD GetTickCount(VOID)


Parameters

This function has no parameters.

Return Values

If the function succeeds, the return value is the number of milliseconds that have elapsed since Windows was started.
прогер C\C++\C#\Delphi
ася: [семь 3]-[97]-[1 шесть]
RUSt88 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Быстрая сортировка Serious Общие вопросы Delphi 2 02.11.2010 13:38
Быстрая сортировка _Studentka_ Помощь студентам 9 20.11.2009 00:19
Быстрая сортировка lennon Общие вопросы C/C++ 0 08.10.2009 23:23
Быстрая сортировка Syltan Общие вопросы C/C++ 7 18.09.2009 17:35
быстрая сортировка ГРИГОРИЙ-кореш Помощь студентам 1 16.04.2009 18:13