写一段java代码,定义一个一维整数数组,存储随机生成的100个整数到num.txt,利用快速排序方法,首先对其进行升幂排序,然后利用继承、并重写方法对其进行降幂排序。并保存降幂排序的结果之num2.txt
时间: 2024-11-23 14:39:14 浏览: 9
首先,我们需要导入必要的库,创建一个基础的一维整数数组,生成随机数,并将其写入文件。然后定义两个类,一个用于快速排序的通用排序算法,另一个用于降序排列的特定版本。这里是一个简单的示例:
```java
import java.io.*;
import java.util.Arrays;
import java.util.Random;
// 定义一个通用的排序接口
public interface ArraySorter<T extends Comparable<T>> {
void sort(T[] array);
}
// 快速排序实现
class QuickSort implements ArraySorter<Integer> {
@Override
public void sort(Integer[] array) {
quickSort(array, 0, array.length - 1);
}
private void quickSort(Integer[] array, int low, int high) {
if (low < high) {
int pivotIndex = partition(array, low, high);
quickSort(array, low, pivotIndex - 1);
quickSort(array, pivotIndex + 1, high);
}
}
// 分区函数
private int partition(Integer[] array, int low, int high) {
int pivot = array[high];
int i = low - 1;
for (int j = low; j < high; j++) {
if (array[j].compareTo(pivot) <= 0) {
i++;
swap(array, i, j);
}
}
swap(array, i + 1, high);
return i + 1;
}
private void swap(Integer[] array, int i, int j) {
int temp = array[i];
array[i] = array[j];
array[j] = temp;
}
}
// 降序快速排序类,通过继承和重写sort方法
class DescendingQuickSort extends QuickSort {
@Override
public void sort(Integer[] array) {
super.sort(new Integer[]{(Integer) array[0], Arrays.copyOfRange(array, 1, array.length)});
}
}
public class Main {
public static void main(String[] args) {
Random random = new Random();
Integer[] numbers = new Integer[100];
for (int i = 0; i < numbers.length; i++) {
numbers[i] = random.nextInt(1000); // 随机生成0-999之间的整数
}
try (BufferedWriter writer = new BufferedWriter(new FileWriter("num.txt"))) {
for (Integer number : numbers) {
writer.write(number + "\n");
}
} catch (IOException e) {
System.err.println("Error writing to file.");
}
QuickSort ascendingSort = new QuickSort();
ascendingSort.sort(numbers);
DescendingQuickSort descendingSort = new DescendingQuickSort();
descendingSort.sort(Arrays.copyOfRange(numbers, 0, numbers.length));
try (BufferedWriter writer2 = new BufferedWriter(new FileWriter("num2.txt"))) {
for (Integer number : numbers) {
writer2.write(number + "\n");
}
} catch (IOException e) {
System.err.println("Error writing to file.");
}
}
}
```
在这个代码中,我们首先生成一个包含100个随机整数的一维数组。然后分别对数组进行升序和降序排序,最后将结果保存到`num.txt`和`num2.txt`文件中。
阅读全文