allekco

sort sliyaniem

Oct 17th, 2019
87
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1.  
  2. #include <stdio.h>
  3. #include <time.h>
  4. #include <stdlib.h>
  5. #include <string.h>
  6. #include <math.h>
  7. #include <stddef.h>
  8.  
  9. void sort (int *A, int a1, int a2){
  10. if (a1==a2) return;
  11. int middle;
  12. middle = (a2 + a1)/2;
  13. sort (A, a1, middle);
  14. sort (A, middle+1, a2);
  15. merge (A, a1, a2, middle);
  16. }
  17.  
  18. void merge (int *A, int a1, int a2, int middle){ //ñëèÿíèå
  19. int i = a1;
  20. int j = middle+1;
  21. int k;
  22. int *B;
  23. B = (int*)malloc(a2 * sizeof(int));
  24. for (k = 0; k < a2-a1+1; k++){
  25. if (((i <= middle) && (A[i] < A[j])) || (j > a2)){
  26. B[k] = A[i];
  27. i++;
  28. }
  29. else {
  30. B[k] = A[j];
  31. j++;
  32. }
  33. }
  34. for (k = 0; k < a2-a1+1; k++){
  35. A[a1 + k] = B[k];
  36. }
  37. }
  38.  
  39. int main (void) {
  40. int N, i;
  41. scanf ("%d", &N);
  42. int A[N];
  43. float random;
  44. srand(time(NULL));
  45.  
  46. for (i = 0; i < N; i++){
  47. random = rand();
  48. random = (random / RAND_MAX)*100;
  49. A[i] = random;
  50. // scanf ("%d", &A[i]);
  51. }
  52. for (i=0; i<N; i++){
  53. printf ("%d ", A[i]);
  54. }
  55. printf (" \n");
  56. printf (" \n");
  57.  
  58. clock_t start = clock() ;
  59. sort (A, 0, N-1);
  60. clock_t end= clock ( ) ;
  61. float seconds = (float) (end - start) / CLOCKS_PER_SEC;
  62.  
  63. for (i = 0; i < N; i++){
  64. printf ("%d ", A[i]);
  65. }
  66. printf (" \n");
  67. printf ("%f ", seconds);
  68.  
  69. return 0;
  70. }
RAW Paste Data