您的位置:首页 > 其它

给定两个排序后的数组A和B,其中A的末端有足够的缓冲空间容纳B。将B合并入A并排序

2016-11-23 00:00 465 查看
/**
* 功能:给定两个排序后的数组A和B,其中A的末端有足够的缓冲空间容纳B。将B合并入A并排序。

*/

/**

* 问题:如果将元素插入数组A的前端,就必须将原有的元素向后移动,以腾出空间。

* 思路:将元素插入数组A的末端。

*

* 注意:在处理完B的元素之后,不需要复制A的剩余元素,因为那些元素原本就在A中。

* @param a

* @param b

* @param lastA

* @param lastB

*/

public static void merge(int[] a,int[] b,int lastA,int lastB){

int indexA=lastA-1;

int indexB=lastB-1;

int indexMerged=lastA+lastB-1;

while(indexA>=0&&indexB>=0){

if(a[indexA]>b[indexB]){

a[indexMerged]=a[indexA];

indexMerged--;

indexA--;

}else{

a[indexMerged]=a[indexB];

indexMerged--;

indexB--;

}

}

while(indexB>=0){

a[indexMerged]=a[indexB];

indexMerged--;

indexB--;

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐