import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
public class MergeSort02 {
private static int account = 0;
public static void main(String[] args) {
/*int[] nums = new int[]{7,5,6,4};
int[] temp = new int[nums.length];
mergeSort(nums,0,nums.length-1,temp);
System.out.println(Arrays.toString(nums));
System.out.println(account);*/
List<Integer> list = new ArrayList<>();
list.add(1);
list.add(2);
System.out.println(Arrays.toString(list.toArray(new Integer[list.size()])));
}
public static void mergeSort(int[] nums,int left,int right,int[] temp){
if (left >= right) return;
int mid = left+(right-left)/2;
mergeSort(nums,left,mid,temp);
mergeSort(nums,mid+1,right,temp);
merge(nums,left,mid,right,temp);
}
public static void merge(int[] nums,int left,int mid,int right,int[] temp) {
for (int i = left; i <= right; i++) {
temp[i] = nums[i];
}
int i = left;
int j = mid + 1;
while (i <= mid && j <= right) {
if (temp[i] <= temp[j]) {
nums[left++] = temp[i++];
} else {
nums[left++] = temp[j++];
account+=mid-i+1;
}
}
while (i<=mid){
nums[left++] = temp[i++];
}
while (j<right){
nums[left++] = temp[j++];
}
}
}
归并排序问题
最新推荐文章于 2022-03-24 14:15:32 发布