已知两个有序数组,建立第三个有序数组?

jcreatorqijiashe 2003-06-09 12:01:58
a和b是两个有序数组,把他们的所有数字组成第三个数组L,要求仍按升序排列,我知道我的程序有重复比较的错误,而且不能循环10次,谁能把我这个程序改正确?不要别人的源代码!
main(){
int a[6]={3,5,7,8,9,12};
int b[4]={0,3,6,50};
int L[10];
void compare(int sa[],int sb[],int sL[]);
compare(a,b,L);
return 0;
}
void compare(int sa[],int sb[],int sL[]){
int *psa=sa;
int *psb=sb;
int *psL=sL;
int i,j;
for(i=0;i<6;i++){
for(j=0;j<4;j++){
if(sa[i]<sb[j]){
*psL=sa[i];
}else if(sa[i]>sb[j]){
*psL=sb[j];
}else{
*psL=sa[i]=sb[j];
}
}
psL++;
}
cout<<"=========The L[] is============\n"<<endl;
for(i=0;i<10;i++){
printf("%d\t",sL[i]);
}
}
...全文
87 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
kicool 2003-06-09
  • 打赏
  • 举报
回复
#include <iostream> //for cout
#include <cstdlib> //for system()

using namespace std;

void compare(int sa[],int sb[],int sL[],int numSa,int numSb); //It's better to put declaration here

int main(){
int a[6]={3,5,7,8,9,12};
int b[4]={0,3,6,50};
int L[10];
compare(a,b,L,6,4);
system("pause");
return 0;
}
void compare(int sa[],int sb[],int sL[],int numSa,int numSb){
int *psL=sL;
int i = 0,j = 0;
do{
if ( sa[i] < sb[j] ){
(*psL) = sa[i];
++i;
++psL;
}
else{
(*psL) = sb[j];
++j;
++psL;
}
}while((i<numSa)&&(j<numSb));
while (i<numSa){
(*psL) = sa[i];
++i;
++psL;
}
while (j<numSb){
(*psL) = sb[j];
++j;
++psL;
}

cout<<"=========The L[] is============\n"<<endl;
for(i=0;i<numSa+numSb;i++){
printf("%d\t",sL[i]);
}
}

69,373

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧