国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Java > 正文

java二路歸并排序示例分享

2019-11-26 15:39:22
字體:
來源:轉載
供稿:網友

歸并排序就是采用分治法進行排序:

(1)將一個數組分成小的2個數組分別進行排序;

(2)之后將分出來的已經拍好序的數組進行合并;

復制代碼 代碼如下:

import java.util.Scanner;
public class MergeSort {
    int[] a=null;
    int[] b=null;
    int n;
    Scanner sin=null;

    MergeSort()
    {
        a=new int[10000];
        b=new int[10000];
        sin=new Scanner(System.in);
    }

    void sort(int start,int end)    //排序a[start...end]
    {
        int mid;
     if(start >= end)    //只有一個元素的時候,直接返回
            return ;
        else
        {
            mid=(end-start)/2;    //將元素分成兩半,分別排序
            sort(start,start+mid);
            sort(start+mid+1,end);

            //歸并兩個有序的數組a[start...start+mid]和a[start+mid+1...end]
            merge(start,start+mid,end);   
        }
    }

    void merge(int start,int mid,int end)    //歸并
    {
        int t=start;
        int i=start,j=mid+1;
        while(i<=mid && j<=end)
        {
            if(a[i]<a[j])
                b[t++]=a[i++];
            else
                b[t++]=a[j++];
        }
        while(i<=mid)
            b[t++]=a[i++];
        while(j<=end)
            b[t++]=a[j++];

        for(i=start;i<=end;i++)    //排序后的內容寫回a數組的相應位置去
            a[i]=b[i];
    }

    void run()
    {
        System.out.print("輸入要排序的數的個數:");
        n=sin.nextInt();
        for(int i=0;i<n;i++)
            a[i]=sin.nextInt();
        sort(0,n-1);
        System.out.println("排序結果是:");
        //輸入要排序的數據
        for(int i=0;i<n;i++)
            System.out.println(a[i]+"  ");
    }

    public static void main(String[] args) {
        new MergeSort().run();
    }
}

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 阿鲁科尔沁旗| 华坪县| 综艺| 张掖市| 南木林县| 赣榆县| 霍山县| 天祝| 东明县| 翁牛特旗| 金昌市| 阜阳市| 荔波县| 昌吉市| 抚松县| 福建省| 兴城市| 抚宁县| 武安市| 阳西县| 东阳市| 定日县| 儋州市| 西盟| 祁阳县| 中西区| 青田县| 岳普湖县| 惠东县| 柳州市| 冕宁县| 蒙自县| 湘阴县| 东安县| 平邑县| 黄浦区| 凯里市| 南宫市| 教育| 凯里市| 济源市|