</pre><pre>
//合并数组的两个子有序段
public class FindRightPlaceMid {
public static void findRightPlaceMid(int a[],int mid){
int temp,i=0,j=mid,k;
while(i<j){
//先判断j是否小于a.length,再判断a[i]>a[j],否则会有数组越界异常
//&&判断,若左半部分为flase,则不再判断右半部分了
if(j<a.length&&a[i]>a[j]){
temp = a[j];
for(k=j;k>i;k--){
a[k] = a[k-1];
}
a[i] = temp;
i++;
j++;
}else{
i++;
}
}
}
public static void main(String[] args){
int[] a={8,10,13,14,1,2,3,4,5,6,7};
prientutils.printArray(a);
findRightPlaceMid(a,4);
prientutils.printArray(a);
}
}
引申:
(1)如果数组的两个子有序序列都按将序排列,可以用类似的方法来解决
(2)若两个子序列一个升序一个将序,可将其中一个逆序,再用上述方法