C程序将两个数组合并排序
1个回答
展开全部
原理:先将两个数组复制到第三个数组中,然后对第三个数组排序
如果不使用第三个函数,那么下面这个函数一样可以做到,不过函数声明就要改成:
char* fun(char *dest, char *str, char *dest)
/*------------------------------函数--------------------------------*/
char* fun(char *str1,char *str2,char *dest) //前提,目标数组能偶容纳两个数组
{
char *tmp=dest;
char *tmp_dest=dest;
if(!dest)
return NULL;
while(*str1) //将str1复制进dest
*tmp++=*str1++;
while(*str2) //将str2复制进dest
*tmp++=*str2++;
tmp_dest--; //
while(*++tmp_dest) //选择排序法
{
char *tmp_px=NULL;
tmp=tmp_dest;
while(*++tmp) //找到后面一串的最值
{
if(*tmp_dest<*tmp)
tmp_px=tmp;
}
if(!tmp_px)
{
char ch=*tmp_dest;
*tmp_dest=*tmp_px;
*tmp_px=ch;
}
}
return dest;
}
如果不使用第三个函数,那么下面这个函数一样可以做到,不过函数声明就要改成:
char* fun(char *dest, char *str, char *dest)
/*------------------------------函数--------------------------------*/
char* fun(char *str1,char *str2,char *dest) //前提,目标数组能偶容纳两个数组
{
char *tmp=dest;
char *tmp_dest=dest;
if(!dest)
return NULL;
while(*str1) //将str1复制进dest
*tmp++=*str1++;
while(*str2) //将str2复制进dest
*tmp++=*str2++;
tmp_dest--; //
while(*++tmp_dest) //选择排序法
{
char *tmp_px=NULL;
tmp=tmp_dest;
while(*++tmp) //找到后面一串的最值
{
if(*tmp_dest<*tmp)
tmp_px=tmp;
}
if(!tmp_px)
{
char ch=*tmp_dest;
*tmp_dest=*tmp_px;
*tmp_px=ch;
}
}
return dest;
}
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询