Advertisement
techno-

p2 día 1 final

Oct 3rd, 2022
43
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 2.30 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <time.h>
  3. #include <stdlib.h>
  4. #include <sys/time.h>
  5. #include <math.h>
  6.  
  7. double microsegundos() {
  8.     struct timeval t;
  9.     if (gettimeofday(&t, NULL) < 0 )
  10.         return 0.0;
  11.     return (t.tv_usec + t.tv_sec * 1000000.0);
  12. }
  13.  
  14.  
  15. void ordenacionPorInsercion (int v[],int n) {
  16.     int i;
  17.     int j;
  18.     int x;
  19.  
  20.     for (i = 1; i <= n - 1; i++) {
  21.         x = v[i];
  22.         j = i - 1;
  23.         while (j > -1 && v[j] > x) {
  24.             v[j + 1] = v[j];
  25.             j = j - 1;
  26.         }
  27.         v[j + 1] = x;
  28.     }
  29. }
  30. void inicializar_semilla() {
  31.     srand(time(NULL));
  32. }
  33. void aleatorio(int v [], int n) {/* se generan números pseudoaleatorio entre -n y +n */
  34.     int i, m=2*n+1;
  35.     for (i=0; i < n; i++)
  36.         v[i] = (rand() % m) - n;
  37. }
  38. void ascendente(int v [], int n) {
  39.     int i;
  40.     for (i=0; i < n; i++)
  41.         v[i] = i;
  42. }
  43. void descendente(int v [], int n){
  44.     int i;
  45.     int j;
  46.     for (i=0; i < n; i++) {
  47.         j = 10 - i;
  48.         v[i] = j;
  49.     }
  50. }
  51.  
  52. void test(int a[], int tamano){
  53.     int i;
  54.     aleatorio(a,tamano);
  55.     for(i=0;i<tamano;i++){
  56.         printf("%d ",a[i]);
  57.     }
  58.     printf("\n");
  59.     ordenacionPorInsercion(a,tamano);
  60.     for(i=0;i<tamano;i++){
  61.         printf("%d ",a[i]);
  62.     }
  63. }
  64.  
  65. int main() {
  66.     int k;
  67.     double t1, t2, t, x, y, z;
  68.     int cont;
  69.     int n;
  70.  
  71.     inicializar_semilla();
  72.     int tamano = 500;
  73.     int a[tamano];
  74.  
  75.     descendente(a, tamano);
  76.  
  77.     t1 = microsegundos();
  78.     ordenacionPorInsercion(a, tamano);
  79.     t2 = microsegundos();
  80.  
  81.     t = t2 - t1;
  82.  
  83.     if (t < 500) {
  84.         t1 = microsegundos();
  85.         for (k = 0; k <= 100; k++) {
  86.             ordenacionPorInsercion(a, tamano);
  87.         }
  88.         t2 = microsegundos();
  89.         t = (t2 - t1) / k;
  90.     }
  91.  
  92.     for (cont = 1; cont <= 3; cont++) {
  93.         for (n = 500; n <= 32000; n = n * 2) {
  94.             inicializar_semilla();
  95.             int b[n];
  96.             aleatorio(b,n);
  97.             t1 = microsegundos();
  98.             ordenacionPorInsercion(b,n);
  99.             t2 = microsegundos();
  100.             t = t2 - t1;
  101.             x = t / pow(n,1.8);
  102.             y = t / pow(n,2);
  103.             z = t / pow(n, 2.2);
  104.             printf("%12d%15.3f%15.6f%15.6f%15.6f\n", n, t, x, y, z);
  105.         }
  106.         printf("\n");
  107.     }
  108.     return 0;
  109. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement