题解 | #合并两个有序的数组#
合并两个有序的数组
http://www.nowcoder.com/practice/89865d4375634fc484f3a24b7fe65665
还是先遍历B中的元素到A中
再使用排序
可以用其他算法,这里使用的是快排(为什么使用快排?本菜单纯想复习一下快排而已)
也可以偷懒,直接使用工具类Arrays.sort(A);代码看起来更简洁
import java.util.*;
public class Solution {
public void merge(int A[], int m, int B[], int n) {
for(int i=m;i<m+n;i++){
A[i]=B[i-m];
}
quickSort(A,0,m+n-1);
}
//快排
public void quickSort(int[] arr,int s,int e){
if(s>=e){
return;
}
int i,j,temp;
i = s;
j = e;
temp = arr[s];
while(i<j){
while(i<j && arr[j]>=temp){
j--;
}
while(i<j && arr[i]<=temp){
i++;
}
if(i<j){
arr[i]=arr[i]^arr[j];
arr[j]=arr[i]^arr[j];
arr[i]=arr[i]^arr[j];
}
}
arr[s] = arr[i];
arr[i] = temp;
quickSort(arr,s,j-1);
quickSort(arr,j+1,e);
}
}