标签:code new ges lse length turn 归并排序 大小 子集合
最常使用的归并排序方法是2-路归并排序。
时间复杂度:O(nlog2n)
空间复杂度:O(n)
稳定性:稳定
static void mergeSort(int[] nums){
int[] tmp = new int[nums.length];
mergeSort(nums, tmp, 0, nums.length - 1);
}
static void mergeSort(int[] nums, int[] tmp, int left, int right){
if (left >= right)
return;
int mid = (left + right) / 2;
mergeSort(nums, tmp, left, mid);
mergeSort(nums, tmp, mid + 1, right);
merge(nums, tmp, left, mid, right);
}
static void merge(int[] nums, int[] tmp, int left, int mid, int right){
for (int i = left; i <= right; i++){
tmp[i] = nums[i];
}
int i = left;
int j = mid + 1;
int k = left;
while (i <= mid && j <= right){
if (tmp[i] <= tmp[j]){
nums[k++] = tmp[i++];
}else{
nums[k++] = tmp[j++];
}
}
while (i <= mid){
nums[k++] = tmp[i++];
}
while (j <= right){
nums[k++] = tmp[j++];
}
}
标签:code new ges lse length turn 归并排序 大小 子集合
原文地址:https://www.cnblogs.com/hao-blogs/p/12635327.html