﻿

# 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