用Java写归并排序

来源:互联网 发布:乐高ev3大象编程 编辑:程序博客网 时间:2024/06/14 01:34

用Java写归并排序

归并排序的过程如下:

这里写图片描述

import java.util.*;/* * Java归并排序的练习 */public class MergeSort {    public void mergeSort(int[] array, int start, int end) {        if(start < end) {            int mid = (start + end) / 2;            mergeSort(array, start, mid);            mergeSort(array, mid + 1, end);            merge(array, start, mid, mid + 1, end);        }    }    public void merge(int[] array, int start1, int end1, int start2, int end2) {        int i = start1;        int j = start2;        List<Integer> list = new ArrayList<>();        while(i <= end1 && j <= end2) {            if(array[i] <= array[j]) {                list.add(array[i++]);            }else {                list.add(array[j++]);            }        }        while(i <= end1) {            list.add(array[i++]);        }        while(j <= end2) {            list.add(array[j++]);        }        for(int p = start1; p <= end2; p++) {            array[p] = list.get(p - start1);        }    }    public static void main(String[] args) {        // TODO Auto-generated method stub        MergeSort m = new MergeSort();        int[] array = {19, 17, 20, 18, 16, 21};        m.mergeSort(array, 0, array.length-1);        for(int i = 0; i < array.length; i++) {            System.out.println(array[i]);        }    }}

程序的运行结果为:

这里写图片描述

用Python写的归并排序更为简洁,参考如下:
http://blog.csdn.net/u010429424/article/details/73602374

这里写图片描述

原创粉丝点击