数据结构与算法-(归并排序)排序算法
我们在之前肯定知道如何将两个有序数组组成一个有序数组,也知道分治法,而归并排序其实就是分治法和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);
}
}
}