Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- void mergeSort(int *A, int p, int r)
- {
- if (p < r)
- {
- int q = (p + r) / 2;
- int static k = 0;
- if (k != 0)
- {
- printf("분리[%d]회 : ",k);
- see(A, p, r);
- }
- k++;
- mergeSort(A, p, q);
- mergeSort(A, q + 1, r);
- merge(A, p, q, r);
- }
- }
- void merge(int *A, int p, int q, int r)
- {
- int * B = (int *)malloc(sizeof(int)* (r + 1));
- int i = p;
- int j = q + 1;
- int t = 0;
- while (i <= q && j <= r)
- {
- if (A[i] < A[j])
- B[t++] = A[i++];
- else
- B[t++] = A[j++];
- }
- while (i <= q)
- B[t++] = A[i++];
- while (j <= r)
- B[t++] = A[j++];
- t = 0, i = p;
- while (i <= r)
- A[i++] = B[t++];
- static int o = 0;
- printf("병합[%d]회 : ", ++o);
- see(A, p, r);
- free(B);
- }
- void see(int *A, int p, int r)
- {
- int i;
- for (i = p; i <= r; i++)
- printf("%d ", A[i]);
- printf("\n");
- }
Advertisement
Add Comment
Please, Sign In to add comment