/**
* 功能:给定两个排序后的数组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--; } }
版权声明:本文为博主原创文章,未经博主允许不得转载。
时间: 2024-10-03 14:01:14