合并排序:
采用分治策略将待排序的元素分成大小大致相同的两个子集合,先对两个子集合进行排序,将排序好的子集合合并成排好序的集合。
采用分治策略将待排序的元素分成大小大致相同的两个子集合,先对两个子集合进行排序,将排序好的子集合合并成排好序的集合。
其算法是复杂度T(n)=O(nlogn)
合并排序主要中主要是在merge()这个方法中进行了排序。mergesort()仅仅是对数组进行的划分。
import java.util.Arrays;
import java.util.Scanner;
public class MergeSort {
/**
* 合并排序
* 分治策略
* 将待排序的元素分成大小大致相同的两个子集合,先对两个子集合进行排序,将排序好的子集合合并成排好序的集合
* 复杂度T(n)=O(nlogn)
*/
public static void mergesort(int[] a, int left, int right) {
// int b[]=new int[right-left+1];
int i = (left + right) / 2;
if (left < right) {
mergesort(a, left, i);// 左边排序
mergesort(a, i + 1, right);// 右边排序
mer