Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- void Merge(int numbers[], int i, int j, int k) {
- int mergedSize = k - i + 1;
- int mergedNumbers[mergedSize];
- int mergePos;
- int leftPos;
- int rightPos;
- mergePos = 0;
- leftPos = i;
- rightPos = j + 1;
- while (leftPos <= j && rightPos <= k) {
- if (numbers[leftPos] < numbers[rightPos]) {
- mergedNumbers[mergePos].departures = numbers[leftPos].departures;
- strcpy( mergedNumbers
- ++leftPos;
- }
- else {
- mergedNumbers[mergePos].departures = numbers[rightPos].departures;
- ++rightPos;
- }
- ++mergePos;
- }
- while (leftPos <= j) {
- mergedNumbers[mergePos].departures = numbers[leftPos].departures;
- ++leftPos;
- ++mergePos;
- }
- while (rightPos <= k) {
- mergedNumbers[mergePos].departures = numbers[rightPos].departures;
- ++rightPos;
- ++mergePos;
- }
- for (mergePos = 0; mergePos < mergedSize; ++mergePos) {
- numbers[i + mergePos] = mergedNumbers[mergePos];
- }
- }
- void mergeSortRecords(int numbers[], int i, int k) {
- int j;
- if (i < k) {
- j = (i + k) / 2; // Find the midpoint in the partition
- // Recursively sort left and right partitions
- mergeSortRecords(numbers, i, j);
- mergeSortRecords(numbers, j + 1, k);
- // Merge left and right partition in sorted order
- mergeRecords(numbers, i, j, k);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement