#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
class Solution
{
public:
void guibing(vector<int>& nums)
{
if(nums.size()<2) return ;
int mid=nums.size()/2;
vector<int> res1;
vector<int> res2;
for(int i=0;i<mid;i++)
{
res1.push_back(nums[i]);
}
for(int i=mid;i<nums.size();i++)
{
res2.push_back(nums[i]);
}
guibing(res1);
guibing(res2);
nums.clear();
merge_tow(res1,res2,nums);
}
private:
void merge_tow(vector<int> res1,vector<int> res2,vector<int>& nums)
{
int i=0;
int j=0;
while(i<res1.size() && j<res2.size())
{
if(res1[i]<res2[j])
{
nums.push_back(res1[i]);
i++;
}else
{
nums.push_back(res2[j]);
j++;
}
}
for(;i<res1.size();i++)
{
nums.push_back(res1[i]);
}
for(;j<res2.size();j++)
{
nums.push_back(res2[j]);
}
}
};
int main()
{
vector<int> nums;
for(int i=0;i<20;i++)
{
int x=rand()%100;
nums.push_back(x);
cout<<x<<" ";
}
cout<<endl;
Solution ss;
ss.guibing(nums);
for(int i=0;i<nums.size();i++)
{
cout<<nums[i]<<" ";
}
cout<<endl;
return 0;
}
#include <vector>
#include <algorithm>
using namespace std;
class Solution
{
public:
void guibing(vector<int>& nums)
{
if(nums.size()<2) return ;
int mid=nums.size()/2;
vector<int> res1;
vector<int> res2;
for(int i=0;i<mid;i++)
{
res1.push_back(nums[i]);
}
for(int i=mid;i<nums.size();i++)
{
res2.push_back(nums[i]);
}
guibing(res1);
guibing(res2);
nums.clear();
merge_tow(res1,res2,nums);
}
private:
void merge_tow(vector<int> res1,vector<int> res2,vector<int>& nums)
{
int i=0;
int j=0;
while(i<res1.size() && j<res2.size())
{
if(res1[i]<res2[j])
{
nums.push_back(res1[i]);
i++;
}else
{
nums.push_back(res2[j]);
j++;
}
}
for(;i<res1.size();i++)
{
nums.push_back(res1[i]);
}
for(;j<res2.size();j++)
{
nums.push_back(res2[j]);
}
}
};
int main()
{
vector<int> nums;
for(int i=0;i<20;i++)
{
int x=rand()%100;
nums.push_back(x);
cout<<x<<" ";
}
cout<<endl;
Solution ss;
ss.guibing(nums);
for(int i=0;i<nums.size();i++)
{
cout<<nums[i]<<" ";
}
cout<<endl;
return 0;
}