Zliczanie czasu procesora podczas sortowania

0

Otóż napisałem program "sortowanie przez wybieranie" Wygląda tak:

#include <windows.h>
#include <stdio.h>
#include <time.h>


const int N = 100;

int main()
{
  int Tab[N], i, j, min, x;
  long start, stop;
  start = 0;
  stop = 0;
  printf("Sortowanie przez wybor\n");
  printf("\n");


 srand((unsigned)time(NULL));

  for(i = 0; i < N; i++) Tab[i] = rand() % 100;



/*
  for(i = 0; i < N; i++) printf("%d ",Tab[i]);
    printf("\n");
*/

start = timeGetTime();
  for(j = 0; j < N - 1; j++)
  {
    min = j;
    for(i = j + 1; i < N; i++)
      if(Tab[i] < Tab[min]) min = i;
        x = Tab[min];
        Tab[min]= Tab[j];
        Tab[j]= x;
  }
stop = timeGetTime();

printf("Czas wykonywania sortowania wynosi: %li  \n\n",stop - start);
/*
  printf("Tablica po sortowaniu:\n\n");
  for(i = 0; i < N; i++) printf("%d ",Tab[i]);
*/
  return 0;
}
 

Do zliczania czasu użyłem timeGetTime lecz tablicy poniżej tysiąca wyświetla zero natomiast powyżej 1000000 wyrzuca mi program. Działa tylko w zakresie 1000-100000.

Jak temu zaradzić?

0

Tak dużej tablicy nie można utworzyć statycznie (na stosie), pamięć dla niej trzeba przydzielić dynamicznie - funkcje malloc() i free().

0

QueryPerformanceTimer + google, albo powtórz sortowanie kilka - kilkaset tysięcy razy, a otrzymany czas podziel przez liczbę sortowań.

1 użytkowników online, w tym zalogowanych: 0, gości: 1