Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include<iostream>
- #include<vector>
- #include<queue>
- using namespace std;
- void msd_sort(vector<int>& v, int l, int r, int s)
- {
- if (l >= r || s < 0)
- {
- return;
- }
- queue<int> q0, q1;
- vector<int> cnt(2);
- vector<int> tmp(v.size());
- for (int i(l); i < r; i++)
- {
- if ((v[i] >> s) & 1)
- {
- q1.push(v[i]);
- cnt[1]++;
- }
- else
- {
- q0.push(v[i]);
- cnt[0]++;
- }
- }
- int i = l;
- while (!q0.empty()) {
- tmp[i] = q0.front();
- q0.pop(), i++, cnt[0];
- }
- while (!q1.empty()) {
- tmp[i] = q1.front();
- q1.pop(), i++, cnt[1];
- }
- for (int i(l); i < r; i++)
- {
- v[i] = tmp[i];
- }
- msd_sort(v, l, l + cnt[0], s - 1);
- msd_sort(v, l + cnt[0], r, s - 1);
- }
- int main() {
- vector<int> v;
- int x = 0;
- while (cin.peek() != '\n' && cin >> x) {
- v.push_back(x);
- }
- msd_sort(v, 0, v.size(), 31);
- //cout
- for (int i = 0; i < v.size(); i++) {
- if (v[i] < 0) cout << v[i] << " ";
- }
- for (int i = 0; i < v.size(); i++) {
- if (v[i] >= 0) cout << v[i] << " ";
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement