编程完成随机生成20个数,用合并排序进行排序
时间: 2024-02-13 17:59:57 浏览: 94
排序算法_随机生成1000个数字_用排序算法排序并比较算法的赋值次数_
5星 · 资源好评率100%
好的,我可以为您提供Java代码实现。
合并排序是一种基于分治的排序算法,可以通过以下Java代码实现:
```java
import java.util.Arrays;
import java.util.Random;
public class MergeSort {
public static void main(String[] args) {
int[] nums = generateRandomArray(20); // 调用方法生成随机数组
System.out.println("随机数组为:" + Arrays.toString(nums));
mergeSort(nums, 0, nums.length - 1); // 调用方法进行排序
System.out.println("排序后数组为:" + Arrays.toString(nums));
}
public static void mergeSort(int[] nums, int left, int right) {
if (left >= right)
return;
int mid = left + (right - left) / 2;
mergeSort(nums, left, mid);
mergeSort(nums, mid + 1, right);
merge(nums, left, mid, right);
}
public static void merge(int[] nums, int left, int mid, int right) {
int[] temp = new int[right - left + 1];
int i = left, j = mid + 1, k = 0;
while (i <= mid && j <= right) {
if (nums[i] <= nums[j])
temp[k++] = nums[i++];
else
temp[k++] = nums[j++];
}
while (i <= mid)
temp[k++] = nums[i++];
while (j <= right)
temp[k++] = nums[j++];
System.arraycopy(temp, 0, nums, left, temp.length);
}
public static int[] generateRandomArray(int len) {
int[] nums = new int[len];
Random random = new Random();
for (int i = 0; i < len; i++) {
nums[i] = random.nextInt(101) - 50; // 生成-50~50之间的随机整数
}
return nums;
}
}
```
以上代码中,`generateRandomArray`方法用于随机生成长度为`len`的整数数组,`mergeSort`方法用于实现合并排序,`merge`方法用于实现合并操作。`main`方法用于调用并输出结果。
希望这份代码对您有所帮助!
阅读全文