Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- using namespace std;
- int Array[10];
- void MSort(int left, int right) {
- if (right == left)
- return;
- if (right - left == 1) {
- if (Array[right] < Array[left])
- swap(Array[right], Array[left]);
- return;
- }
- int median = (right + left) / 2;
- int buffer[10];
- int left_ = left;
- int right_ = median + 1;
- int c = 0;
- MSort(left, median);
- MSort(median + 1, right);
- while (right - left + 1 != c) {
- if (left_ > median)
- buffer[c++] = Array[right_++];
- else if (right_ > right)
- buffer[c++] = Array[left_++];
- else if (Array[left_] > Array[right_])
- buffer[c++] = Array[right_++];
- else buffer[c++] = Array[left_++];
- }
- for (int i = 0; i < c; i++)
- Array[i + left] = buffer[i];
- for (int i = 0; i < c; i++)
- Array[i + left] = buffer[i];
- }
- int main() {
- const int n = 10;
- for (int i = 0; i < n; i++)
- cin >> Array[i];
- MSort(0, n - 1);
- for (int i = 0; i < n; i++)
- cout << Array[i] << " ";
- cout << endl;
- return 0;
- }
Add Comment
Please, Sign In to add comment