请用分治法写出C++代码
时间: 2024-10-06 08:06:33 浏览: 28
数据结构笔记附算法c和c++代码资源
分治法是一种常见的算法设计策略,它的基本思想是将一个复杂的问题分解成规模较小、相互独立的子问题,分别解决,再合并子问题的解以得到原问题的解。下面是一个使用分治法的经典例子——快速排序算法的C++实现:
```cpp
#include <iostream>
using namespace std;
// 分治函数:快速排序的核心部分
void quickSort(int arr[], int low, int high) {
if (low < high) {
// 找到分区点
int pivot = partition(arr, low, high);
// 对左右两个子区间递归地进行快速排序
quickSort(arr, low, pivot - 1);
quickSort(arr, pivot + 1, high);
}
}
// 区间划分函数
int partition(int arr[], int low, int high) {
int pivot = arr[high]; // 最大元素
int i = (low - 1); // 小于基准的元素索引
for (int j = low; j <= high - 1; j++) {
// 如果当前元素小于或等于pivot
if (arr[j] <= pivot) {
i++; // 移动指针到下一个元素
swap(arr[i], arr[j]); // 交换元素
}
}
swap(arr[i + 1], arr[high]);
return (i + 1);
}
// 主函数
int main() {
int arr[] = {9, 7, 5, 11, 12, 2, 14, 3, 10, 6};
int n = sizeof(arr) / sizeof(arr[0]);
quickSort(arr, 0, n - 1);
cout << "Sorted array: \n";
for (int i = 0; i < n; i++)
cout << arr[i] << " ";
return 0;
}
```
在这个代码中,`quickSort`函数负责分割问题,`partition`函数则用于实际的元素划分。`main`函数中创建了一个示例数组并调用了`quickSort`函数进行排序。
阅读全文