数据结构与算法-(归并排序)排序算法

数据结构与算法-(归并排序)排序算法

我们在之前肯定知道如何将两个有序数组组成一个有序数组,也知道分治法,而归并排序其实就是分治法和merge的组合。
package suanfa;

import java.util.Arrays;

public class MySort {

    public void mergeSort(int[] data,int start,int end){
        if(start<end){
            int mid=(start+end)/2;
            mergeSort(data,start,mid);
            mergeSort(data,mid+1,end);
            merge(data,start,mid,end);
        }
    }

    private void merge(int[] data, int start, int mid, int end) {
        int[] temp= Arrays.copyOfRange(data,0,data.length);
        int index=start;
        int i=start;
        int k=mid+1;
        while(i<=mid&&k<=end){
            if(temp[i]<temp[k]){
                data[index++]=temp[i++];
            }
            else{
                data[index++]=temp[k++];
            }
        }
        while(i<=mid){
            data[index++]=temp[i++];
        }
        while(k<=end){
            data[index++]=temp[k++];
        }

    }

    public static void main(String[] args){
        int[] data=new int[]{9,8,7,65,4,3,32,223,1};
        MySort mySort=new MySort();
        mySort.mergeSort(data,0,data.length-1);
        for(int value:data){
            System.out.println(value);
        }
    }
}
posted on 2021-09-23 16:02  gyp666  阅读(33)  评论(0)    收藏  举报