用分治策略编写程序实现快速排序算法,要求输出每次快排后的结果,测试数据为:11,9,3,61,5,1598,84
时间: 2024-10-11 13:09:07 浏览: 24
快速排序(Quicksort)是一种使用分治策略的经典排序算法,它的工作原理是选择一个基准元素(pivot),将数组分为两部分,一部分所有元素都小于基准,另一部分所有元素都大于基准,然后对这两部分递归地进行同样的操作。
以下是一个简单的C++代码实现快速排序,同时输出每一步的结果:
```cpp
#include <iostream>
#include <vector>
void swap(int& a, int& b) {
int temp = a;
a = b;
b = temp;
}
int partition(std::vector<int>& arr, int low, int high) {
int pivot = arr[high];
int i = (low - 1);
for (int j = low; j <= high - 1; j++) {
if (arr[j] < pivot) {
i++;
swap(arr[i], arr[j]);
}
}
swap(arr[i + 1], arr[high]);
return (i + 1);
}
void quickSort(std::vector<int>& arr, int low, int high) {
if (low < high) {
int pi = partition(arr, low, high);
quickSort(arr, low, pi - 1); // 递归左半边
quickSort(arr, pi + 1, high); // 递归右半边
}
}
// 测试数据
std::vector<int> data = {11, 9, 3, 61, 5, 1598, 84};
int main() {
std::cout << "Original array: ";
for (const auto& num : data) {
std::cout << num << " ";
}
std::cout << "\n";
quickSort(data, 0, data.size() - 1);
std::cout << "Sorted array after each step:\n";
for (const auto& num : data) {
std::cout << num << " ";
quickSort(data, 0, data.size() - 1); // 重新排序以便显示每次分割后的情况
std::cout << "\n";
}
return 0;
}
```
运行这段代码,你会看到原始数组首先被排序,然后在每次分割之后都会打印出已排序的部分。请注意,由于在输出每个步骤时我们又调用了`quickSort`,所以实际运行时,除了第一次排序外,后续的"分割后"输出实际上是同一数组经过多次重复的排序过程。如果你不希望每次分割后再排序,只需去掉那部分即可。
阅读全文
相关推荐
![docx](https://img-home.csdnimg.cn/images/20241231044901.png)
![zip](https://img-home.csdnimg.cn/images/20241231045053.png)
![rar](https://img-home.csdnimg.cn/images/20241231044955.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![-](https://img-home.csdnimg.cn/images/20241231044930.png)
![7z](https://img-home.csdnimg.cn/images/20241231044736.png)
![application/x-rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![-](https://img-home.csdnimg.cn/images/20241231045053.png)
![-](https://img-home.csdnimg.cn/images/20241231044901.png)
![-](https://img-home.csdnimg.cn/images/20241231045053.png)
![-](https://img-home.csdnimg.cn/images/20241226111658.png)
![-](https://img-home.csdnimg.cn/images/20241226111658.png)
![-](https://img-home.csdnimg.cn/images/20241226111658.png)
![-](https://img-home.csdnimg.cn/images/20241226111658.png)
![-](https://img-home.csdnimg.cn/images/20241226111658.png)
![-](https://img-home.csdnimg.cn/images/20241226111658.png)
![-](https://img-home.csdnimg.cn/images/20241226111658.png)
![-](https://img-home.csdnimg.cn/images/20241226111658.png)
![-](https://img-home.csdnimg.cn/images/20241226111658.png)