[求助]已知两个升序序列,将它们合并成一个升序序列并输出
已知两个升序序列,将它们合并成一个升序序列并输出我思考拉!应该有两种方法啊!
一种是判断两个序列的元素,两个元素中小的就先进新的数组,一直判断完两个序列为止。
另一种是把两个数列合并,再用徘序法啊!
由于我初学还写不出程序啊!就想大家帮帮忙啊!写个程序给小弟!
而且我还想知道两种方法哪个更好啊!运行的快!或者有更好的方法啊!
你第一种思路就是归并排序,示例按从小到大排,需要归并的两个数组已经按从小到大排序完毕
int* merge(int* list1,int list1_length,int* list2,list2_length)
{
int new_list[list1_length+list2_length];
int i,j,k;
i=0;j=0;k=0;
while (i<list1_length && j<list2_length)
{
if (list1[i]<list2[j])
new_list[k++]=list1[i++];
if (list1[i]==list2[j])
{
new_list[k++]=list1[i++];
new_list[k++]=list2[j++];
}
if (list1[i]>list2[j])
new_list[k++]=list2[j++];
}
while (i<list1_length)
new_list[k++]=list1[i++];
while (j<list2_length)
new_list[k++]=list2[j++];
return new_list;
}