|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Member
Iscritto dal: Nov 2009
Messaggi: 57
|
[C++]Calcolo tempo eseguzione di 2 funzioni di ricerca
Ciao a tutti, premettendo che lavoro su Windows vorrei fare un programma che dopo aver ordinato un vettore con numeri casuali, mi facesse due funzioni di ricerca: la Ricerca Sequenziale(o Completa) e la Ricerca Binaria(o Dicatonica) e che mi stampasse il tempo che impiega sia a fare la prima funzione sia la seconda.
Io ho provato ma non ho idea se funziona: Codice:
#include <iostream>
#include <time.h>
using namespace std;
int RicercaCompleta(int v[], int n, int x);
int RicercaDitonica(int v[], int n, int x);
int main()
{
int v[5000],n,x,fin,it,ini,i,k,y,j;
srand(time(NULL));
cout << "Dammi la lunghezza desiderata: ";
cin >> n;
cout << endl;
for(i=0;i<n;i++)
v[i]=rand();
for(i=0;i<n-1;i++) //ordina il vettore di numeri casuali
{
k=i;
x=v[i];
for(j=i+1;j<n;j++)
if(v[j]<x)
{
k=j;
x=v[j];
}
v[k]=v[i];
v[i]=x;
}
cout << "Inserisci il numero da ricercare: ";
cin >> x;
cout << endl;
cout << "La ricerca completa ha impiegato: " << RicercaCompleta(v,n,x) << endl;
cout << "La ricerca ditonica ha impiegato: " << RicercaDitonica(v,n,x) << endl;
system("PAUSE");
return EXIT_SUCCESS;
}
int RicercaCompleta(int v[], int n, int x)
{
time_t start;
int i;
for(i=0;i<n && v[i]<=x;i++)
if(v[i]==x)
{
return start;
}
return -1;
}
int RicercaDitonica(int v[], int n, int x)
{
time_t start;
int fin,ini,it;
fin=n-1;
ini=0;
while(ini<=fin)
{
it = (ini+fin)/2;
if(v[it]==x)
{
return start;
}
if(v[it]<x)
ini = it+1;
else
fin = it-1;
}
}
|
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 18:21.



















