题解 | #合并两个有序的数组#

合并两个有序的数组

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);
    }
}
全部评论

相关推荐

头像
11-21 11:39
四川大学 Java
是红鸢啊:忘了还没结束,还有字节的5k 违约金
点赞 评论 收藏
分享
1 收藏 评论
分享
牛客网
牛客企业服务