<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    posts - 15,comments - 65,trackbacks - 0
            本文最先發(fā)布于本人個人博客http://www.lovestblog.cn
            下面簡單的說說歸并排序,所謂歸并排序就是說把輸入數(shù)組分成兩組當(dāng)然也可以大于2組,一般我們是等量的分成2組,通過遞歸我們可以把長度為n的數(shù)組分成n個數(shù)組,我們通過一定的關(guān)鍵字比較把兩兩結(jié)合成一個有序的數(shù)組,然后回溯到原數(shù)組大小的有序數(shù)組,具體的我就不多說了,因為比較簡單,到網(wǎng)上可以找些相關(guān)文章看看什么是歸并排序,歸并排序算法可以再O(nlogn)的時間內(nèi)對長度為n的序列完成排序,至于合并兩個有序數(shù)組,假如這兩個數(shù)組的長度分別為m和n,那么我們只需要O(n+m)的時間久可以完成對這兩個有序數(shù)組的合并,下面還是代碼說明之:
    package org.rjb.Sort;
    /**
     * 歸并排序(升序排列)
     * 
    @author ljp
     *
     
    */

    public class MergeSort {
        
    /**
         * 對原始數(shù)組進(jìn)行平等劃分為兩個子數(shù)組
         * 
    @param nums
         
    */

        
    public static void sort(int[] nums){
            
    int n=nums.length;
            
    if(n<=1)
                
    return;
            
    int nums1[]=new int[n/2];
            
    int nums2[]=new int[n-n/2];
            
    for(int i=0,j=nums1.length;j<nums.length;i++,j++){
                
    if(i<nums1.length){
                    nums1[i]
    =nums[i];
                }

                nums2[i]
    =nums[j];
            }

            
    //遞歸對子數(shù)組進(jìn)行劃分
            sort(nums1);
            sort(nums2);
            
    //把子數(shù)組排序后的結(jié)果進(jìn)行合并
            merge(nums,nums1,nums2);
        }

        
    /**
         * 合并兩個有序的子數(shù)組為一個有序的數(shù)組
         * 
    @param nums 合并之后的數(shù)組
         * 
    @param num1 有序的子數(shù)組
         * 
    @param num2 有序的子數(shù)組
         
    */

        
    public static void merge(int[] nums,int num1[],int num2[]){
            
    int n1=num1.length-1;
            
    int n2=num2.length-1;
            
    int k=0;
            
    int k1=0,k2=0;
            
    while(k1<=n1||k2<=n2){
                
    int e=0;
                
    if(k1>n1){//如果第一個數(shù)組已經(jīng)全部比較完了,那么我們只要直接復(fù)制第二個數(shù)組的條目到合并數(shù)組中即可
                    e=num2[k2++];
                }
    else if(k2>n2){//如果第二個數(shù)組已經(jīng)全部比較完了,那么我們只要直接復(fù)制第一個數(shù)組的條目到合并數(shù)組中即可
                    e=num1[k1++];
                }
    else if(num1[k1]>num2[k2]){//把比較的兩個條目中關(guān)鍵值小的放到合并數(shù)組中
                    e=num2[k2++];
                }
    else{
                    e
    =num1[k1++];
                }

                nums[k
    ++]=e;
            }

        }

        
    /**
         * 主函數(shù)
         * 
    @param args
         
    */

        
    public static void main(String args[]){
            
    int[] nums={10,2,3,7,4,9,1};
            sort(nums);
            
    for(int i=0;i<nums.length;i++){
                System.out.print(nums[i]
    +" ");
            }
    System.out.println();
        }

    }

    posted on 2009-05-29 16:55 你假笨 閱讀(1221) 評論(0)  編輯  收藏

    只有注冊用戶登錄后才能發(fā)表評論。


    網(wǎng)站導(dǎo)航:
     
    主站蜘蛛池模板: 好爽…又高潮了毛片免费看 | 免费在线视频一区| 成年网站免费入口在线观看| 亚洲AV中文无码字幕色三| 亚洲免费人成视频观看| 精品无码专区亚洲| 亚洲国产精品无码久久久不卡 | 曰批免费视频播放在线看片二 | 亚洲成?v人片天堂网无码| 国产精品区免费视频| 亚洲日韩国产一区二区三区在线| 亚洲男人天堂2020| 在线看片韩国免费人成视频| 国产天堂亚洲国产碰碰| 亚洲国产高清人在线| 国产免费av片在线播放| 99精品一区二区免费视频| 免费无码国产V片在线观看| 亚洲精品中文字幕乱码| 国产99视频精品免费视频7| 2019中文字幕在线电影免费 | 免费中文字幕视频| 亚洲国产成人精品电影| 亚洲色欲色欲www在线丝| 日韩高清在线高清免费| 最近中文字幕完整版免费高清| 免费一级毛片在线播放放视频| 亚洲国产模特在线播放| 亚洲AV无码成人精品区在线观看 | 无码国产精品一区二区免费虚拟VR| 一区二区免费在线观看| 亚洲国产精品嫩草影院| 久久丫精品国产亚洲av| 亚洲精品无码专区久久久| 国产区卡一卡二卡三乱码免费| 国产免费不卡v片在线观看| 黄页免费在线观看| jzzjzz免费观看大片免费| 国产亚洲综合精品一区二区三区| 亚洲人成综合在线播放| 亚洲成色999久久网站|