Advertisement
Guest User

Untitled

a guest
May 30th, 2015
222
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.62 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <time.h>
  4. #define DIM 500
  5. #define RADICE_SIZE 10
  6. #define MAX_CIFRE 3
  7.  
  8. typedef struct list_node *lista_pointer;
  9. typedef struct list_node {
  10. int chiave[MAX_CIFRE];
  11. lista_pointer link;
  12. }lista;
  13.  
  14. void inserzione(int [], int);
  15. void selezione(int[], int);
  16. void scambia(int *, int *);
  17. void quicksort(int [], int, int);
  18. int perno(int [], int, int);
  19. void mergesort(int[], int[], int, int);
  20. void merge(int[], int[], int, int, int);
  21. void adatta(int[], int, int);
  22. void heapsort(int [], int);
  23. lista_pointer radixsort(lista_pointer);
  24.  
  25. int counter_scambi=0, counter_confronti=0;
  26.  
  27. int main()
  28. {
  29. int lista[DIM], i, j;
  30. int ArrOrd[DIM], ArrInv[DIM], ArrRand[DIM], ArrParz[DIM];
  31. clock_t start, end;
  32. double tempo;
  33. srand(time(NULL));
  34.  
  35. for(i=0, j=DIM-1; i<DIM; i++, j--){
  36. ArrOrd[i]=i; //da i=0 a 1=size
  37. ArrInv[i]=j; //da i=size a i=0
  38. if(i<(DIM/2))
  39. ArrParz[i]=i; //da i=0 sino a i=size/2
  40. else
  41. ArrParz[i]=ArrInv[i]; //da i=(size/2)+1 sino i=size inversamente ordinato
  42. ArrRand[i]=rand()%DIM; //totalmente random
  43. }
  44. start=clock();
  45. inserzione(ArrOrd, DIM);
  46. end=clock();
  47. tempo=(double)(end-start)/(double)CLOCKS_PER_SEC;
  48. printf("\nArray ordinato:\nNumero confronti: %d\nNumero scambi: %d\nTempo: %f", counter_confronti, counter_scambi, tempo);
  49. start=clock();
  50. inserzione(ArrInv, DIM);
  51. end=clock();
  52. tempo=(double)(end-start)/(double)CLOCKS_PER_SEC;
  53. printf("\nArray inversamente ordinato:\nNumero confronti: %d\nNumero scambi: %d\nTempo: %f", counter_confronti, counter_scambi, tempo);
  54. start=clock();
  55. inserzione(ArrParz, DIM);
  56. end=clock();
  57. tempo=(double)(end-start)/(double)CLOCKS_PER_SEC;
  58. printf("\nArray parzialmente ordinato:\nNumero confronti: %d\nNumero scambi: %d\nTempo: %f", counter_confronti, counter_scambi, tempo);
  59. start=clock();
  60. inserzione(ArrRand, DIM);
  61. end=clock();
  62. tempo=(double)(end-start)/(double)CLOCKS_PER_SEC;
  63. printf("\nArray casuale:\nNumero confronti: %d\nNumero scambi: %d\nTempo: %f", counter_confronti, counter_scambi, tempo);
  64.  
  65. return 0;
  66. }
  67.  
  68. void inserzione(int lista[], int n){
  69. int i, j, prossimo;
  70.  
  71. for (i=0; i<n; i++) {
  72. prossimo=lista[i];
  73.  
  74. if(prossimo>=lista[i-1])
  75. counter_confronti++;
  76.  
  77. for (j=i-1; j>=0 && prossimo < lista[j]; j--){
  78. lista[j+1]=lista[j];
  79. counter_confronti++;
  80. counter_scambi++;
  81. }
  82. lista[j+1]=prossimo;
  83. counter_scambi++;
  84. }
  85. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement