Un par de cosas.
Lo primero es que para medir el tiempo, no puedes realizar una vez el algoritmo y mirarlo, porque en un cálculo tan simple que tarda una fracción de tiempo minúscula en hacerla no tendrás ningún resultado.
Deberías repetir el algoritmo, por ejemplo, 100.000 veces, y luego ya dividir el resultado entre 10.000 para tener algo verdadero.
El problema, es que aún así, con ese algoritmo el resultado que te va a dar es siempre 0, es demasiado simple y no tarda "nada" en hacerlo. Te voy a poner unos ejemplos que tengo aquí de hace unos años en clase, con 3 funciones diferentes.
El primero, es una búsqueda secuencial
#include <vector>
#include <iostream>
#include <time.h>
using namespace std;
int Secuencial (vector <int> &A, int x, int n){
int i=0;
while (i<n&&A[i]!=x){
i++;
}
return i;
}
int main(){
vector <int> v(972000,0);
float mejor, peor;
float ini,fin,tiempo;
cout << "Busqueda secuencial" << endl << endl;
cout << "Talla" << "\t\tMejor caso" << "\t\tPeor caso" << endl;
cout << "-----\t\t----------\t\t---------"<<endl;
int talla[6]={4000, 12000, 36000, 108000, 324000, 972000};
int repeticiones=10000;
int i, j;
for (i=0;i<6;i++){
v.resize (talla[i],0);
ini=clock();
for (j=0;j<=repeticiones-1;j++){
Secuencial (v,0,talla[i]);
}
fin=clock();
mejor=(fin-ini)*1000/CLOCKS_PER_SEC/repeticiones;
ini=clock();
for (j=0;j<=repeticiones-1;j++){
Secuencial (v,1,talla[i]);
}
fin=clock();
peor=(fin-ini)*1000/CLOCKS_PER_SEC/repeticiones;
cout << talla[i] << "\t\t" << mejor << "ms\t\t\t" << peor<<"ms" <<endl;
}
}
En este caso tienes el mejor y peor caso, los tiempos de mejor caso serían más o menos lo que tardaría tu algoritmo, que es encontrar el valor en el primer lugar del array.
Algoritmo de la sucesión de Fibonacci (lo llamo rayuela porque es un juego infantil, aunque es el mismo algoritmo).
En este algoritmo si se ven tiempos reales, al tratarse de una función recursiva MUY poco eficiente.
#include <time.h>
#include <iostream>
using namespace std;
int Rayuela_Recursiva(int);
int main(){
int n=4, i, j, repeticiones=1;
int talla[4]={10, 20, 30, 40};
float ini, fin, tiempo;
cout<<" Talla\t\t\tTiempo\n";
cout<<" -----\t\t\t---------\n";
for(i=0;i<n;i++){
ini=clock();
for(j=1;j<=repeticiones;j++)
Rayuela_Recursiva(talla[i]);
fin=clock();
tiempo=((fin-ini)/repeticiones)/CLOCKS_PER_SEC;
cout<<" "<<talla[i]<<"\t\t\t"<<" "<<tiempo<<" s\n\n";
}
return 0;
}
//Orden de complejidad O(2^n)
int Rayuela_Recursiva(int n){
if(n==1||n==2) return n;
else return Rayuela_Recursiva(n-1)+ Rayuela_Recursiva(n-2);
}
El mismo algoritmo, pero con un orden de complejidad lineal.
#include <time.h>
#include <iostream>
using namespace std;
//Orden de complejidad O(n)
int Rayuela_Iterativa (int n){
int a=1, b=2;
for (int i=0;i<n-2;i++){
b=a+b;
a=a-b;
}
return b;
}
int main(){
int n=6, i, j, repeticiones=10000;
int talla[6]={4000, 12000, 36000, 108000, 324000, 972000};
float ini, fin, tiempo;
cout<<" Talla\t\t\tTiempo\n";
cout<<" -----\t\t\t---------\n";
for(i=0;i<n;i++){
ini=clock();
for(j=1;j<=repeticiones;j++)
Rayuela_Iterativa(talla[i]);
fin=clock();
tiempo=(((fin-ini)*1000/repeticiones)/CLOCKS_PER_SEC);
cout<<" "<<talla[i]<<"\t\t\t"<<" "<<tiempo<<" ms\n\n";
}
return 0;
}
Espero que te sirva de algo este tocho xd