在Java中将快速排序的每一步保存在矩阵中,可以通过以下步骤实现:
以下是一个示例代码:
public class QuickSortMatrix {
private static int[][] matrix; // 保存排序结果的矩阵
private static int step = 0; // 当前排序步骤
public static void main(String[] args) {
int[] arr = {5, 2, 9, 1, 3, 6, 8, 4, 7}; // 待排序数组
matrix = new int[arr.length][arr.length]; // 初始化矩阵
quickSort(arr, 0, arr.length - 1); // 调用快速排序算法
// 打印排序结果矩阵
for (int i = 0; i < matrix.length; i++) {
for (int j = 0; j < matrix[i].length; j++) {
System.out.print(matrix[i][j] + " ");
}
System.out.println();
}
}
private static void quickSort(int[] arr, int low, int high) {
if (low < high) {
int pivot = partition(arr, low, high); // 划分子数组
matrix[step++] = arr.clone(); // 保存当前排序结果
quickSort(arr, low, pivot - 1); // 对左子数组进行排序
quickSort(arr, pivot + 1, high); // 对右子数组进行排序
}
}
private static int partition(int[] arr, int low, int high) {
int pivot = arr[high]; // 选择最后一个元素作为基准
int i = low - 1;
for (int j = low; j < high; j++) {
if (arr[j] < pivot) {
i++;
swap(arr, i, j); // 交换元素
}
}
swap(arr, i + 1, high); // 将基准元素放到正确的位置
return i + 1;
}
private static void swap(int[] arr, int i, int j) {
int temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
}
该示例代码中,通过matrix
矩阵保存每一步排序的结果,最后打印出整个排序过程的矩阵。请注意,这只是一个简单的示例,实际应用中可能需要考虑更多的边界情况和优化。
领取专属 10元无门槛券
手把手带您无忧上云