合并排序

合并排序

算法介紹:

合并排序是建立在歸并操作上的一種有效的排序算法。該算法是采用分治法 的一個非常典型的應用。
合并排序法是將兩個(或兩個以上)有序表合并成一個新的有序表,即把待排序序列分為若干個子序列,每個子序列是有序的。然后再把有序子序列合并為整體有序序列。
將已有序的子序列合并,得到完全有序的序列;即先使每個子序列有序,再使子序列段間有序。若將兩個有序表合并成一個有序表,稱為2-路歸并。合并排序也叫歸并排序。

public class MergingRank {

    /**
     * @param args
     */
    public static void main(String[] args) { 
int[] A={10,9,8,7,6,3,6,5,3,4,5,6,2,34,12,52};  //初始數組
MergingRank Merg=new MergingRank();
          Merg. MergeSort(A); 
    }
    public   void MergeSort(int[] A){    //分治法,分成兩部分進行排序
        int[] B=new int[A.length/2+1];
        int[] C=new int[A.length/2+1];
        if(A.length>0){
            for(int i=0;i<(A.length/2)-1;i++){
                B[i]=A[i];
            }
            int n=1;
            for(int j=(A.length/2);j<A.length;j++){
                C[n]=A[j];
                n++;
            }
            MergeSort(B);                     //遞歸調用
            MergeSort(C);
            Merging(B,C,A);

        }

    }
    public     void Merging(int[] B,int[] C,int[] A){  //排序算法
        int i=0,j=0,k=0;
        while((i<B.length)&&(j<C.length)){
            if (B[i]<=C[j]){
                A[k]=B[j];
                i++;
            }
            else{
                A[k]=C[j];
                j++; 
            } 
        };
        if(i==B.length){
            for(int m=j;m<C.length;m++){
                A[k]=C[m];
                k++;
            }
        }
        else {
            for(int n=i;n<B.length;n++){
                A[k]=B[n];
                k++;
            }
        }

    }

}
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • 合并排序是建立在歸并操作上的一種有效的排序算法。該算法是采用分治法的一個非常典型的應用。合并排序法是將兩個(或兩個...
    noonbiteun閱讀 991評論 0 1
  • 概述:排序有內部排序和外部排序,內部排序是數據記錄在內存中進行排序,而外部排序是因排序的數據很大,一次不能容納全部...
    每天刷兩次牙閱讀 3,743評論 0 15
  • 版本記錄 前言 將數據結構和算法比作計算機的基石毫不為過,追求程序的高效是每一個軟件工程師的夢想。下面就是我對算法...
    刀客傳奇閱讀 2,951評論 0 0
  • 概述 排序有內部排序和外部排序,內部排序是數據記錄在內存中進行排序,而外部排序是因排序的數據很大,一次不能容納全部...
    蟻前閱讀 5,220評論 0 52
  • 定義 邏輯上的一組操作,要么全做,要么全不做。 四大特性(簡稱ACID): 原子性(Atomicity)事務是不可...
    niaoge2016閱讀 332評論 0 0