joh*_*ily 2 java algorithm merge
int [] queue1 = {4,7,2,9,12,35,8,49};
int [] queue2 = {24,53,6,19,41,71,1,68,11,32,99}
int[]mergeQ = new int[queue1.length + queue2.length];
for(int i=0; i < queue1.length; i++ )
{
mergeQ[i*2] = queue1[i];
mergeQ[i*2+1] = queue2[i];
}
for(int i=0; i < mergeQ.length; i++) {
System.out.print(mergeQ[i]+",");
}
Run Code Online (Sandbox Code Playgroud)
产量:4,24,7,53,2,6,9,19,12,41,35,71,8,1,49,68,0,0,0
如何打印出queue2的其余元素.
您的合并算法假设为queue1.length < queue2.length.虽然它对你的程序是正确的,但做出这样的假设通常不是一件好事.
更改合并算法以遍历两个数组,直到达到较短数组的长度,然后将较长数组的其余元素转储到合并数组的尾部.您可以在一个循环中完成所有操作,如下所示:
int p = 0;
for (int i = 0 ; i < queue1.length || i < queue2.length ; i++) {
if (i < queue1.length) {
mergeQ[p++] = queue1[i];
}
if (i < queue2.length) {
mergeQ[p++] = queue2[i];
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6794 次 |
| 最近记录: |