Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <vector>
- using namespace std;
- vector <int> a;
- vector <int> merge_(int x, int y){
- int m=(x+y)/2;
- vector <int> result(y-x);
- int i=x;
- int j=m;
- while (i<m && j<y){
- if (a[i]<=a[j]){
- result[i-x+j-m]=a[i];
- i++;
- }else{
- result[i-x+j-m]=a[j];
- j++;
- }
- }
- while (i<m){
- result[i-x+j-m]=a[i];
- i++;
- }while (j<y){
- result[i-x+j-m]=a[j];
- j++;
- }
- return result;
- }
- vector <int> merge_sort(int x, int y){
- if (y-x<=1){
- return a;
- }
- int m=(x+y)/2;
- merge_sort(x, m);
- merge_sort (m, y);
- vector <int> merged=merge_(x, y);
- for (int i=0; i<y-x; i++){
- a[x+i]=merged[i];
- }
- return a;
- }
- int main(){
- int n;
- cin>>n;
- int x=0;
- for (int i=0; i<n; i++){
- int b;
- cin>>b;
- a.push_back(b);
- }
- vector <int> answer=merge_sort(x, n);
- for (int i=0; i<n; i++){
- cout<<answer[i]<<" ";
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement