1、时间复杂度
平均:O(nlogn)
最优:O(nlogn)
最差:O(nlogn)
2、空间复杂度
O(n)
3、java代码
public class Sort {
public static void mergeSort(int[] arr, int left, int right){
if (left < right){
int mid = (left+right)/2;
mergeSort(arr, left, mid);
mergeSort(arr, mid+1, right);
merge(arr, left, mid, right);
}
}
public static void merge(int[] arr, int left, int mid, int right){
int[] temp = new int[right-left+1];
int i=0;
int pivot1 = left;
int pivot2 = mid+1;
while (pivot1<=mid && pivot2<=right){
if (arr[pivot1]<arr[pivot2]){
temp[i++] = arr[pivot1++];
}else {
temp[i++] = arr[pivot2++];
}
}
while (pivot1<=mid){
temp[i++] = arr[pivot1++];
}
while (pivot2<=right){
temp[i++] = arr[pivot2++];
}
for (int j=0;j<temp.length;j++){
arr[left+j] = temp[j];
}
}
public static void main(String[] args) {
int[] list = {8,2,9,4,3,18,21,10};
mergeSort(list,0,list.length-1);
for (int j : list) {
System.out.println(j);
}
}
}