Advertisement
Guest User

Untitled

a guest
Mar 29th, 2020
89
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.46 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <time.h>
  4.  
  5. #define DIM 100
  6. #define MIN 0
  7.  
  8. typedef enum{ORDINATO, QUASI_ORDINATO, INV_ORDINATO,CASUALE} inputType;
  9.  
  10. void selectionSortIterativo(int array[], int n);
  11.  
  12. int generaArray(int dimensione, inputType tipo_schema);
  13.  
  14. int main() {
  15. int i;
  16.  
  17. srand(time(NULL));
  18.  
  19. inputType tipo;
  20.  
  21. int array[DIM], *ptr;
  22. ptr = &array[DIM];
  23.  
  24. /**Opzioni di scelta per l'utente*/
  25.  
  26. printf("\n *** Seleziona una voce ***\n\n");
  27. printf("\n0 - ordinato"
  28. "\n1 - quasi ordinato"
  29. "\n2 - inv ordinato"
  30. "\n3 - casuale\n");
  31.  
  32. scanf("%d", &tipo);
  33.  
  34.  
  35.  
  36. *ptr = generaArray(DIM,tipo);
  37.  
  38. return 0;
  39. }
  40.  
  41.  
  42. void selectionSortIterativo(int array[], int n){
  43. int i, j,min, val = 0;
  44.  
  45. for(i=0;i<=n-2;i++){
  46. min = i;
  47. for(j=i+1;j<=n-1;j++){
  48. if(array[j]<array[min]){
  49. min = j;
  50.  
  51. }
  52. }
  53. val = array[min];
  54. array[min] = array[i];
  55. array[i] = val;
  56. }
  57. }
  58.  
  59.  
  60. int generaArray(int dimensione, inputType tipo_schema){
  61. int i, val = 0;
  62. int array[DIM];
  63.  
  64. clock_t start,end;
  65. double t;
  66.  
  67.  
  68.  
  69. for(i=0;i<DIM;i++){
  70. array[i] = MIN + rand() % (DIM - MIN +1);
  71. }
  72.  
  73. switch (tipo_schema){
  74. case ORDINATO:
  75. for(i=0;i<DIM;i++){
  76. array[i] = i;
  77. }
  78. break;
  79. case QUASI_ORDINATO:
  80. for(i=0;i<DIM;i++){
  81. if(i<=(DIM/2)){
  82. array[i] = i;
  83. }
  84. }
  85. break;
  86. case INV_ORDINATO:
  87.  
  88. for(i=DIM;i>0;i--){
  89. array[val] = i;
  90. val = val+1;
  91. }
  92.  
  93. break;
  94. case CASUALE:
  95. for(i=0;i<DIM;i++){
  96. array[i] = MIN + rand() % (DIM - MIN +1);
  97. }
  98. break;
  99. }
  100.  
  101.  
  102.  
  103.  
  104. printf("\nPrima:\n");
  105. for(i=0;i<DIM;i++){
  106. printf("\nCella [%d] contenente -> %d\n", i+1, array[i]);
  107. }
  108.  
  109. start = clock();
  110. selectionSortIterativo(array,DIM);
  111.  
  112. end = clock();
  113.  
  114. t = ((double)(end - start)) / CLOCKS_PER_SEC;
  115. printf("\nDopo:\n");
  116.  
  117. for(i=0;i<DIM;i++){
  118. printf("\nCella [%d] contenente -> %d\n", i+1, array[i]);
  119. }
  120.  
  121. printf("\nTempo impiegato dal Selection Sort Iterativo per ordinare %d elementi in modo %d, tempo pari a -> %lf\n", DIM,tipo_schema, t);
  122.  
  123.  
  124. return *array;
  125. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement