歸併排序

最近的算法課,上得我是一臉懵逼,大一學過歸併排序,如今也忘得差很少了,如今來回顧一下。java


1.關於歸併
這是歸併排序中很重要的一個步驟,必定要耐心的看明白。若是給定兩個已經排好序的數組,A=[1,3,5],B=[2,4], 如今要將兩個數組合併成一個有序數組,你會怎麼作?
1.開闢一個長度爲10的數組C算法

  1. 先在A,B數組中各取第一個元素進行比較,將小的元素放入數組C中;
    3.取小的元素所在數組的下一個元素與另外一數組中上次比較後較大的元素比較,重複上述比較過程,直到某個數組被先排完;
    4.將另外一個數組剩餘元素寫入c數組,合併排序完成。
    代碼:
public class MergeSort {
    @Test
    public void merge() {
        int[] A = {1, 2, 3};
        int[] B = {2, 4, 5};
        int i1 = 0, i2 = 0, i3 = 0;
        int[] C = new int[6];
        while (i1 < A.length && i2 < B.length) {
            if (A[i1] <= B[i2]) {
                C[i3++] = A[i1++];
            } else {
                C[i3++] = B[i2++];
            }
        }
        while(i1<A.length){
            C[i3++] = A[i1++];
        }
        while(i2<B.length){
            C[i3++]=B[i2++];
        }
        for(int i=0; i<C.length;i++){
            System.out.print(C[i]+" ");
        }
    }

運行結果:
數組

未完待續...(能夠參考https://www.jianshu.com/p/33cffa1ce613)code

相關文章
相關標籤/搜索