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

Nie tworzyć tablicy na stosie plus podzielić na funkcje.

0

Co to niby da?

0

Na Windowsie stos jest często ograniczony do 1 MB, a 1000000 32-bitowych intów to 3.5 razy tyle.

0

Jak zrobic zeby tablica nie tworzyla się na stosie?

0

Mamy XXI wiek, a Ty wciąż nie wiesz, co to Google.

0

Poszukaj hasła: alokacja na stercie.

0

A co z małymi wartosciami? Ponizej 1000

1

Też alokuj na stercie.
Głowna zasada programowania: nie kombinuj pod górkę.

0

Poniżej tysiąca wyrzuca zero, bo dokładność zegara jest zbyt niska. Musisz wybrać bardziej precyzyjną metodę odliczania czasu lub wykonać sortowanie wielokrotnie, a potem przeskalować wynik.

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