数据结构与算法java版 快速排序如何输出每一趟排序后数组状态
时间: 2023-09-02 09:02:35 浏览: 122
快速排序是一种基于分治法的常用排序算法,其基本思想是选取一个基准元素,通过一次排序将数组分成两个子数组,然后再在两个子数组中分别递归地应用快速排序,直到排序完成。
要输出每一趟排序后数组的状态,可以在快速排序的递归过程中进行修改。具体实现如下:
```java
public class QuickSort {
public static void main(String[] args) {
int[] nums = {5, 3, 8, 4, 2};
quickSort(nums, 0, nums.length - 1);
}
private static void quickSort(int[] nums, int left, int right) {
if (left < right) {
int partitionIndex = partition(nums, left, right);
outputArray(nums);
quickSort(nums, left, partitionIndex - 1);
quickSort(nums, partitionIndex + 1, right);
}
}
private static int partition(int[] nums, int left, int right) {
int pivot = nums[right];
int i = left - 1;
for (int j = left; j < right; j++) {
if (nums[j] < pivot) {
i++;
swap(nums, i, j);
}
}
swap(nums, i + 1, right);
return i + 1;
}
private static void swap(int[] nums, int i, int j) {
int temp = nums[i];
nums[i] = nums[j];
nums[j] = temp;
}
private static void outputArray(int[] nums) {
for (int num : nums) {
System.out.print(num + " ");
}
System.out.println();
}
}
```
在上述代码中,定义了一个`outputArray`方法用于输出数组的状态,每次调用`outputArray`方法即输出一趟排序后的数组状态。可以发现,在`quickSort`方法中,先调用`partition`方法对数组进行排序,然后输出数组状态,再分别对左右子数组递归调用`quickSort`方法,按照同样的方式进行排序和输出状态。最终,整个数组将会被完全排序,并输出每一趟排序后的数组状态。
以上是一个使用Java实现的快速排序输出每一趟排序后数组状态的方法。通过以上代码,你可以理解并实践如何输出每一趟排序后数组状态。
阅读全文