Advertisement
techno-

p2

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