Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <stdlib.h>
- void PrintArray(int *Start, int N);
- void Merge(int *Array, int *L, int *R, int N);
- void MergeSort(int *Array, int N);
- int main(int argc, char* argv[])
- {
- if (argc == 1)
- {
- printf("Please give me a space seperated list of numbers!\n");
- return 1;
- }
- int *Array = malloc(sizeof(int) * argc--);
- int i;
- for (i = 0; i < argc; i++)
- Array[i] = atoi(argv[i + 1]);
- MergeSort(Array, argc);
- PrintArray(Array, argc);
- free(Array);
- return 0;
- }
- void PrintArray(int *Start, int N)
- {
- int i;
- for (i = 0; i < N; i++)
- printf("%d ", Start[i]);
- printf("\n");
- }
- void Merge(int *Array, int *L, int *R, int N)
- {
- int i;
- int Li = 0, Ri = 0;
- for (i = 0; i < N; i++)
- {
- if (L[Li] <= R[Ri] && Li < N / 2)
- Array[i] = L[Li++];
- else Array[i] = R[Ri++];
- }
- }
- void MergeSort(int *Array, int N)
- {
- if (N == 1) return;
- int *L = malloc(sizeof(int) * N / 2);
- int *R = malloc(sizeof(int) * N / 2);
- int i;
- for (i = 0; i < N / 2; i++)
- L[i] = Array[i];
- for (i = 0; i < N / 2; i++)
- R[i] = Array[i + N / 2];
- MergeSort(L, N/2);
- MergeSort(R, N/2);
- Merge(Array, L, R, N);
- free(L);
- free(R);
- }
Advertisement
Add Comment
Please, Sign In to add comment