autista
16-05-2007, 15:41
salve ragazzi, devo cronometrare il tempo di esecuzione di questo programma per analizzarne la complessità, solo che con le spiegazioni riguardo la funzione CLOCK_T trovate in rete non ci sono riuscito
#include <stdlib.h>
#include <stdio.h>
#include <time.h>
#define MAX 10
clock_t clock(void) {
clock_t start, end;
double millisec;
time_t app;
start = clock();
end = clock();
millisec = (end-start)/(CLOCKS_PER_SEC /(double) 1000.0);
printf(clock());
return clock();
}
/*
* Legge in input il numero n ed n numeri interi
* che memorizza nell'array. Restituisce il numero
* di elementi letti (n).
*/
int leggi_array(int x[]) {
int i, n;
x[MAX]=rand();
return(MAX);
}
/*
* Stampa in output l'array.
*/
void stampa_array(int x[], int n) {
int i;
for (i=0; i<n; i++) {
printf("%d ", x[i]);
}
printf("\n");
return;
}
/*
* Scambia il contanuto delle due variabili
* indirizzate dai puntatori x e y.
*/
void scambia(int *x, int *y) {
int z;
z = *x;
*x = *y;
*y = z;
return;
}
/*
* Funzione che implementa l'algoritmo Bubble sort.
* Riceve come argomento l'array ed il numero di
* elementi contenuti nell'array. Non restituisce alcun
* valore, ma modifica il contenuto dell'array, ordinandolo.
*/
void bubble_sort(int x[], int n) {
int flag=1, k=n-1, i;
while (flag == 1 && k > 0) {
flag = 0;
for (i=0; i<k; i++) {
if (x[i]>x[i+1]) {
scambia(&x[i], &x[i+1]);
flag = 1;
}
}
k = k-1;
}
return;
}
/*
* Funzione principale
*/
int main(void) {
int v[MAX], n,m,u;
n = leggi_array(v);
stampa_array(v, n);
printf("premere un tasto per iniziare\n");
scanf("%d", &m);
bubble_sort(v, n);
clock_t(bubble_sort);
printf("ordinamento effettuato\n");
return(1);
}
#include <stdlib.h>
#include <stdio.h>
#include <time.h>
#define MAX 10
clock_t clock(void) {
clock_t start, end;
double millisec;
time_t app;
start = clock();
end = clock();
millisec = (end-start)/(CLOCKS_PER_SEC /(double) 1000.0);
printf(clock());
return clock();
}
/*
* Legge in input il numero n ed n numeri interi
* che memorizza nell'array. Restituisce il numero
* di elementi letti (n).
*/
int leggi_array(int x[]) {
int i, n;
x[MAX]=rand();
return(MAX);
}
/*
* Stampa in output l'array.
*/
void stampa_array(int x[], int n) {
int i;
for (i=0; i<n; i++) {
printf("%d ", x[i]);
}
printf("\n");
return;
}
/*
* Scambia il contanuto delle due variabili
* indirizzate dai puntatori x e y.
*/
void scambia(int *x, int *y) {
int z;
z = *x;
*x = *y;
*y = z;
return;
}
/*
* Funzione che implementa l'algoritmo Bubble sort.
* Riceve come argomento l'array ed il numero di
* elementi contenuti nell'array. Non restituisce alcun
* valore, ma modifica il contenuto dell'array, ordinandolo.
*/
void bubble_sort(int x[], int n) {
int flag=1, k=n-1, i;
while (flag == 1 && k > 0) {
flag = 0;
for (i=0; i<k; i++) {
if (x[i]>x[i+1]) {
scambia(&x[i], &x[i+1]);
flag = 1;
}
}
k = k-1;
}
return;
}
/*
* Funzione principale
*/
int main(void) {
int v[MAX], n,m,u;
n = leggi_array(v);
stampa_array(v, n);
printf("premere un tasto per iniziare\n");
scanf("%d", &m);
bubble_sort(v, n);
clock_t(bubble_sort);
printf("ordinamento effettuato\n");
return(1);
}