金曜日, 7月 26, 2013

マージ

2つのソート済み配列を一つの配列にマージし,ソートするコードは以下の通り.厳密にはマージソートと全く異なるので注意.


#include <iostream>
#include <vector>
#include <cmath>
using namespace std;

void dump(const vector<int> v) {

 vector<int>::const_iterator iter;
 for( iter = v.begin(); iter != v.end();iter++ )
  cout << *iter << ' ';
 cout << endl;

}

void merge(const vector<int>& arr1, const vector<int>& arr2, vector<int>& merged) {

 int i,j;
 i = j = 0;
 while( i < arr1.size() && j < arr2.size() ) {
  if( arr1.at(i) <= arr2.at(j) )
   merged.push_back( arr1.at(i++) );
  else
   merged.push_back( arr2.at(j++) );
 }
 while( i < arr1.size() )
  merged.push_back( arr1.at( i++ ) );
 while( j < arr2.size() )
  merged.push_back( arr2.at( j++ ) );

}

int main() {

 vector<int> v1;
 vector<int> v2;
 vector<int> merged;
 v1.push_back(3);
 v1.push_back(5);
 v1.push_back(7);
 v2.push_back(1);
 v2.push_back(2);
 v2.push_back(3);
 v2.push_back(7);
 v2.push_back(9);
 merge(v1,v2,merged);
 dump(merged);

}

0 件のコメント: