View Single Post
Old 23-03-2010, 20:00   #1
m0rix93
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;
    }
}
Attendo risposte, Grazie
m0rix93 è offline   Rispondi citando il messaggio o parte di esso