Advertisement
nRikee

MesuraCercaLineal

Apr 23rd, 2012
54
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 2.79 KB | None | 0 0
  1. import java.util.*;
  2.  
  3. /** Classe MesuraCercaLineal: anàlisi empírica de l'algorisme de cerca lineal
  4.   *
  5.   * @author PRG ETSInf
  6.   * @version Year 2011-2012
  7.   */
  8.  
  9. class MesuraCercaLineal {
  10.  
  11.   // Constants que defineixen els parametres de mesura
  12.   static final int MAXTALLA=1000000, INCRTALLA=100000, INITALLA=100000, REPETICIONS=10000;
  13.  
  14.   // Per omplir l'array
  15.   static void omplirArray(int [] a) {
  16.     for (int i=0;i<a.length;i++) a[i]=i;
  17.   }
  18.  
  19.   public static void mesuraCercaLineal() {
  20.     int [] a;             // Array pel problema
  21.     int t, r, aux;        // Contadors de talla i repeticions, nombre aleatori auxiliar
  22.     double tm1=0, tm2=0, tmt=0, tp1=0, tp2=0, tpt=0, tmed1=0, tmed2=0, tmedt=0;   // Temps
  23.  
  24.     // Imprimir capçalera de resultats
  25.     System.out.printf("# Temps en milisegons\n# Talla    Millor   Pitjor    Promedi\n");
  26.     System.out.printf("#------------------------------------\n");
  27.  
  28.     // Este bucle repeteix el process per diverses talles
  29.     for (t=INITALLA; t<=MAXTALLA; t+=INCRTALLA) {
  30.  
  31.       // Crear i omplir l'array
  32.       a=new int[t];
  33.       omplirArray(a);
  34.  
  35.       // Cas millor: cercar a[0]
  36.       // Com \'es massa r\`apid, les repeticions s'inclouen en la mesura del temps
  37.  
  38.       AlgorismesMesurables.cercaLineal(a,a[0]);  // Crida inicial per evitar sobrecarrega en la primera mesura
  39.       tm1=System.nanoTime();        // Temps inicial
  40.       for (r=0;r<REPETICIONS;r++)
  41.         AlgorismesMesurables.cercaLineal(a,a[0]);
  42.       tm2=System.nanoTime();        // Temps final
  43.       tmt=((tm2-tm1)/REPETICIONS)/1e6;    // Temps promedi pel cas millor
  44.  
  45.       // Cas pitjor: cercar -1
  46.  
  47.       tpt=0;                        // Temps acumulat inicial a 0
  48.       for (r=0;r<REPETICIONS;r++) {
  49.         tp1=System.nanoTime();      // Temps inicial
  50.         AlgorismesMesurables.cercaLineal(a,-1);
  51.         tp2=System.nanoTime();      // Temps final
  52.         tpt+=(tp2-tp1)/1e6;             // Actualitzar temps acumulat
  53.       }
  54.       tpt=tpt/REPETICIONS;          // Temps promedi pel cas pitjor
  55.  
  56.       // Cas promedi: cercar a nombre aleatori entre 0 i t-1
  57.      
  58.       tmedt=0;                        // Temps acumulat inicial a 0
  59.       for (r=0;r<REPETICIONS;r++) {
  60.         aux=(int) Math.floor(Math.random()*t);    // Nombre aleatori a cercar
  61.         tmed1=System.nanoTime();      // Temps inicial
  62.         AlgorismesMesurables.cercaLineal(a,aux);
  63.         tmed2=System.nanoTime();      // Temps final
  64.         tmedt+=(tmed2-tmed1)/1e6;         // Actualitzar temps acumulat
  65.       }
  66.       tmedt=tmedt/REPETICIONS;        // Temps promedi pel cas promedi
  67.  
  68.       // Imprimir resultats
  69.       System.out.printf(Locale.US,"%8d   %10.7f   %10.7f   %10.7f\n",t,tmt,tpt,tmedt);
  70.  
  71.     }
  72.   }
  73.  
  74.   public static void main(String args[]) {
  75.     mesuraCercaLineal();
  76.   }
  77.  
  78. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement