Skip to content

Instantly share code, notes, and snippets.

@Indy9000
Created February 8, 2017 16:12
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save Indy9000/e5bc42dc81b85d69d47edbbe9d05a6cc to your computer and use it in GitHub Desktop.
Save Indy9000/e5bc42dc81b85d69d47edbbe9d05a6cc to your computer and use it in GitHub Desktop.
Merge two sorted vectors
#include <iostream>
#include <vector>
std::vector<int> merge_vec(const std::vector<int>& v1, const std::vector<int>& v2){
std::vector<int> result;
if(v1.size()==0) return v2;
if(v2.size()==0) return v1;
std::size_t i = 0; //v1 indexer
std::size_t j = 0; //v2 indexer
while(i<v1.size() && j<v2.size()){
if(v1[i]>=v2[j]){
result.push_back(v2[j++]); //assume ascending
}else{
result.push_back(v1[i++]);
}
}
while(i<v1.size()) result.push_back(v1[i++]);
while(j<v2.size()) result.push_back(v2[j++]);
return result;
}
void print(const std::vector<int>& v){
for(auto a: v) std::cout << a << ",";
std::cout << std::endl;
}
bool validate(const std::vector<int>& v1,const std::vector<int>& v2){
bool result = true;
result = result && (v1.size() == v2.size());
result = result && (v1 == v2);
return result;
}
int main() {
auto v1 = merge_vec({3,6,7,9,15}, {1,2,3,4,5,6});
auto v1_ = {1,2,3,3,4,5,6,6,7,9,15};
print(v1);
std::cout << (validate(v1,v1_) ? "success":"failed") << std::endl;
auto v2 = merge_vec({}, {1,2,3,4,5,6});
auto v2_ = {1,2,3,4,5,6};
print(v2);
std::cout << (validate(v2,v2_) ? "success":"failed") << std::endl;
auto v3 = merge_vec({1,2,3,4,5,6}, {});
auto v3_ = {1,2,3,4,5,6};
print(v3);
std::cout << (validate(v3,v3_) ? "success":"failed") << std::endl;
auto v4 = merge_vec({1,1,1,1,1,1}, {2,2,2,2,2});
auto v4_ = {1,1,1,1,1,1,2,2,2,2,2};
print(v4);
std::cout << (validate(v4,v4_) ? "success":"failed") << std::endl;
auto v5 = merge_vec({}, {});
auto v5_ = std::vector<int>({});
print(v5);
std::cout << (validate(v5,v5_) ? "success":"failed") << std::endl;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment