·

看了下二楼的代码,感觉你复杂化了,这个很简单:

  • 如果数组 a,b 已经排好序了,直接 copy a 到 c 里面,然后 b 里面元素做个循环比较插入就可以了
  • 如果数组 a,b 乱序,直接先合并,再用通用的排序算法(冒泡排序,快排等)排一下就好了

你的 uparr 函数好像有语法错误,建议用 CLion 这个 IDE,jetbrain 家的,很不错

Replies
5

好的,这个题我看lc上是用双指针来解决的,有点想不明白

void merge(int* a, int m, int* b, int n, int* c)

{

int i=0,j=0,k=0;

while(i<m&&j<n)

{

if(*a>=*b)

{

c[k]=*b;

b++;j++;k++;

}

else

{

c[k]=*a;

a++;i++;k++;

}

}

if(i<m)

{

while(k<=m+n-1)

{

c[k]=*a;

a++;

k++;

}

}

if(j<n)

{

while(k<=n+m-1)

{

c[k]=*b;

b++;

k++;

}

}

}

大概是这样的,为什么要设置if(i<m),if(j<n)?,不是应该通过双指针比较完后再将元素个数多的那个数组直接整合到c数组中吗

你用网页版插入代码的功能 你这样好难看懂代码,网站有个帮助文档 学一下 markdown

现在去学一下