两有序数组的归并+NS图+C++源程序
题目内容
编写程序,将两个有序的一文数组(元素已从小到大排序好)归并成一个
有序的一文数组,并输出。
1.2 N-S图:
a[4]={2,5,3,6}, b[4]={9,8,7,17}
输出未排序的a数组
调用函数A
输出排序后的a数组
输出未排序的b数组
调用函数A
输出排序后的b数组
调用函数C
a[i]>b[j]
是 否
c[k++]=b[j++]
c[k++]=a[i++]
i==4
是 否
c[k++]=b[j] c[k++]=a[i];
输出归并后数组:
1.3 源程序及注释
#include<iostream.h>
void main()
{
void A(int a[],int n); //对A函数进行声明
void C(int a[],int b[],int n); //对C函数进行声明
int a[4]={2,5,3,6};
int b[4]={9,8,7,17};
int i,j;
cout<<endl<<"未排序的a数组:"<<endl;
for(i=0;i<4;i++)
{
cout<<a[i]<<" ";
}
cout<<endl<<"排序后的a数组:"<<endl;
A(a,4); //调用A函数
for(i=0;i<4;i++)
{
cout<<a[i]<<" ";
}
cout<<endl<<"未排序的b数组:"<<endl;
for(j=0;j<4;j++)
{
cout<<b[j]<<" ";
}
cout<<endl<<"排序后的b数组:"<<endl;
A(b,4);
for(j=0;j<4;j++)
{
cout<<b[j]<<" ";
}
C(a,b,8); //调用C函数
}
void A(int a[],int n) //定义A函数
{
int i,j,k,t;
for(i=0;i<n-1;i++) //选择法排序
{
k=i;
for(j=i+1;j<n;j++)
if(a[j]<a[k])
k=j;
t=a[k];a[k]=a[i];a[i]=t;
}
}
void C(int a[],int b[],int n) //定义C函数
{
int i,j,k=0;
int c[原文请找腾讯752018766辣,文-论'文"网http://www.751com.cn else
c[k++]=a[i++];
}
if(i==4)
{
for(;j<4;j++)
c[k++]=b[j];
}
else
{
for(;i<4;i++)
c[k++]=a[i];
}
cout<<endl<<"归并后数组:"<<endl; //输出数组
for(i=0;i<k;i++)
cout<<c[i]<<" ";
}
1.4 运行结果1800