最近看MIT开发的算法课的一个小算法,比较简单就实现了一下,希望能供初学者参考
/*让2个数组先排序,然后合并.
Merging two sorted arrays
作者:Shawn C
*/
#include <iostream>
#include <vector>
using namespace std;
template <typename me>
void bubble(me arry1[],me arry2[])
{
int t,t2; //临时存储变量
for(int i=0;i<3;)
{
for(int j=0;j<=4;) //冒泡泡咯
{
if(arry1[j]>arry1[j+1]) //数组arry1的冒泡排序
{
t=arry1[j];
arry1[j]=arry1[j+1];
arry1[j+1]=t;
}
if(arry2[j]>arry2[j+1]) 数组arry2的冒泡排序
{
t2=arry2[j];
arry2[j]=arry2[j+1];
arry2[j+1]=t2;
}
_asm inc j //云风大哥说这样写等价于j++,但效率要高一点
}
_asm inc i
}
}
template <typename me>
void merge(me arry1[],me arry2[],vector<me>&temp)
{
for(int i=0;i<6;i++)
{
{
if(arry1[i]<arry2[i])
{
temp.push_back(arry1[i]);
temp.push_back(arry2[i]);
}
else
{
temp.push_back(arry2[i]);
temp.push_back(arry1[i]);
}
}
}
}
int main()
{
int a[6]={56,23,22,15,76,34};
int b[6]={24,55,65,45,33,27};
vector<int>v1;
bubble(a,b);
cout<<"合并前:/n";
for(int i=0;i<6;i++)
cout<<"a"<<"["<<i<<"] ="<<a[i]<<"/t"<<"b"<<"["<<i<<"] ="<<b[i]<<endl;
merge(a,b,v1);
cout<<"合并后/n";
for(i=0;i<v1.size();i++)
cout<<"vector"<<"["<<i<<"] ="<<v1[i]<<endl;
return 0;
}
/*让2个数组先排序,然后合并.
Merging two sorted arrays
作者:Shawn C
*/
#include <iostream>
#include <vector>
using namespace std;
template <typename me>
void bubble(me arry1[],me arry2[])
{
int t,t2; //临时存储变量
for(int i=0;i<3;)
{
for(int j=0;j<=4;) //冒泡泡咯
{
if(arry1[j]>arry1[j+1]) //数组arry1的冒泡排序
{
t=arry1[j];
arry1[j]=arry1[j+1];
arry1[j+1]=t;
}
if(arry2[j]>arry2[j+1]) 数组arry2的冒泡排序
{
t2=arry2[j];
arry2[j]=arry2[j+1];
arry2[j+1]=t2;
}
_asm inc j //云风大哥说这样写等价于j++,但效率要高一点
}
_asm inc i
}
}
template <typename me>
void merge(me arry1[],me arry2[],vector<me>&temp)
{
for(int i=0;i<6;i++)
{
{
if(arry1[i]<arry2[i])
{
temp.push_back(arry1[i]);
temp.push_back(arry2[i]);
}
else
{
temp.push_back(arry2[i]);
temp.push_back(arry1[i]);
}
}
}
}
int main()
{
int a[6]={56,23,22,15,76,34};
int b[6]={24,55,65,45,33,27};
vector<int>v1;
bubble(a,b);
cout<<"合并前:/n";
for(int i=0;i<6;i++)
cout<<"a"<<"["<<i<<"] ="<<a[i]<<"/t"<<"b"<<"["<<i<<"] ="<<b[i]<<endl;
merge(a,b,v1);
cout<<"合并后/n";
for(i=0;i<v1.size();i++)
cout<<"vector"<<"["<<i<<"] ="<<v1[i]<<endl;
return 0;
}