作者conan77420 (小马非马)
看板C_and_CPP
标题[问题]两个排序好的阵列,合并成另一个排序好的阵列
时间Mon Apr 20 10:56:29 2009
#include<iostream.h>
int merge(int nums1[],int length1,int nums2[],int length2)
{
int i,j,k=0;
int result[length1+length2];
for( ;i<length1 && j<length2; ) // 判断nums1跟nums2中值的大小,小的先
// 摆入result中
{ if(nums1[i]<nums2[j])
{result[k++]=nums1[i++];}
else if(nums1[i]>nums2[j])
{result[k++]=nums2[j++];}
else
{result[k++]=nums1[i++];
result[k++]=nums2[j++];}
} //上述做完有可能将nums1全放入但
// nums2还没放入所以:
for(int l=i;l<length1;l++) //如果i没到底则全部放入
{result[k++]=nums1[l];}
for(int m=j;m<length2;m++) //如果j没到底则全部放入
{result[k++]=nums2[m];}
for(int i=0;i<8;i++) //印出新的array中的值
{
printf("new array:%d",result[i]);
}
}
int main()
{
int nums1[]={1,3,5,6,13}; //定义两个内部值案小到大排好的
//array
int nums2[]={3,7,13};
merge(nums1,5,nums2,3); //call副程式
system("pause");
======================================================
compile後出现"error: invalid types `int[int]' for array subscript"
编译器所指出的错误我不是很懂他所要表达的意思,
可能是小弟基本观念哪里有误解,请各位指点,谢谢!
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 61.229.130.1
1F:推 SylphWind:宣告的[]内不能是变数 请用malloc或new 04/20 11:00
※ 编辑: conan77420 来自: 61.229.130.1 (04/20 11:02)
2F:→ conan77420:嗯可以了~不过我怎麽听说宣告时放空白compile会自己去 04/20 11:05
3F:→ conan77420:找,然後知道矩阵的大小是多少0.0 04/20 11:05
4F:推 stonehomelaa:你听谁说 有这麽神?? 04/20 11:06
5F:→ conan77420:还有,我的答案输出是怪怪的数字,为什麽不是内容?Q_Q 04/20 11:07
※ 编辑: conan77420 来自: 61.229.130.1 (04/20 11:14)
6F:推 stonehomelaa:喔 我误解了 你main那样宣告OK 04/20 11:14
7F:推 littleshan:你的 i 和 j 没给初值 04/20 11:16
8F:→ littleshan:不要用 iostream.h,用 iostream,不要加 .h 04/20 11:16
9F:→ conan77420:其实我也误解了,一楼说的是我的result~ 04/20 11:17
10F:→ littleshan:既然用了 iostream 就别再用 printf 04/20 11:17
11F:→ littleshan:若要用 printf 应该先 #include <cstdlib> 04/20 11:17
12F:→ conan77420:可以了~~~谢谢各位^^ 04/20 11:18
13F:→ littleshan: merge() 内印结果时,不应把 result 的大小写死 04/20 11:18
14F:→ conan77420:嗯嗯,也谢谢l大 04/20 11:23
15F:推 ledia:printf -> cstdio ? ^^: 04/20 11:32
16F:推 littleshan:yeah, 我笔误了,是 cstdio 而不是 cstdlib 04/20 11:39