Java实现排序算法之合并排序
数组左半部分先进行分治,再对右半部分进行分治。
分:拆分成一个个元素
治:进行合并,谁小就先把谁放进temp临时数组里。
时间复杂度O(nlogn)
import java.util.Arrays;
public class MergeSort {
static int count = 0;
public static void mergeSort(int[] data){
int[] temp = new int[data.length];
mergeSort(data,0,data.length-1,temp);
}
public static void mergeSort(int[] data, int start, int end, int[] temp){
if (start<end) {
int mid = (start + end) / 2;
mergeSort(data, start, mid,temp);
mergeSort(data, mid+1, end,temp);
merge(data,start,mid,end,temp);
System.out.println("merge: "+Arrays.toString(temp));
}
}
private static void merge(int[] data, int start,int mid, int end, int[] temp){
int i = start;
int j = mid+1;
int t = 0;
while (i<=mid && j<=end){
if (data[i]<=data[j]){
temp[t++] = data[i++];
}else {
temp[t++] = data[j++];
}
}
while (i<=mid){
temp[t++] = data[i++];
}
while (j<=end){
temp[t++] = data[j++];
}
t = 0;
while (start<=end){
data[start++] = temp[t++];
}
}
public static void main(String[] args) {
int[] test = new int[]{6,5,4,3,2,1};
mergeSort(test);
System.out.println(Arrays.toString(test));
}
}
本文深入讲解了Java中合并排序算法的实现,通过递归将数组拆分为单个元素,然后比较并合并,确保每次合并后的数组有序。此过程重复直至整个数组排序完成,时间复杂度为O(nlogn)。
415

被折叠的 条评论
为什么被折叠?



