例题:假设有一个整数数组nums,请问如何对它进行归并排序?
分析:我们可以使用归并排序算法来解决这个问题。归并排序是一种分治算法,它的基本思想是将待排序的数组分成两个部分,分别对它们进行归并排序,然后将它们合并起来。具体实现时,我们可以使用递归的方式来分别对左右两个部分进行排序。
Java代码实现:
public static void mergeSort(int[] nums) {
if (nums == null || nums.length <= 1) {
return;
}
int mid = nums.length / 2;
int[] left = Arrays.copyOfRange(nums, 0, mid);
int[] right = Arrays.copyOfRange(nums, mid, nums.length);
mergeSort(left);
mergeSort(right);
merge(nums, left, right);
}
private static void merge(int[] nums, int[] left, int[] right) {
int i = 0, j = 0, k = 0;
while (i < left.length && j < right.length) {
if (left[i] < right[j]) {
nums[k++] = left[i++];
} else {
nums[k++] = right[j++];
}
}
while (i < left.length) {
nums[k++] = left[i++];
}
while (j < right.length) {
nums[k++] = right[j++];
}
}