能否提供一个C++实现的猴子排序(也称为猴爬树排序)算法的示例代码?
时间: 2024-12-11 19:19:41 浏览: 14
猴子排序是一种基于随机选择和插入的简单排序算法,它的基本思想是模拟一群猴子在森林里爬树摘香蕉的过程。虽然不是非常高效,但它通常用于教学演示。下面是一个简单的C++实现:
```cpp
#include <iostream>
#include <vector>
#include <cstdlib> // 需要rand()函数
// 模拟随机选择香蕉的位置
int random_position(const std::vector<int>& arr) {
return rand() % arr.size();
}
void monkey_sort(std::vector<int>& arr) {
if (arr.empty()) return;
// 如果数组长度大于1,则随机选两个元素交换位置
while (arr.size() > 1) {
int i = random_position(arr);
int j = random_position(arr);
// 交换i和j位置上的元素
std::swap(arr[i], arr[j]);
}
// 打印已排序的数组
for (const auto& num : arr) {
std::cout << num << " ";
}
std::cout << "\n";
}
int main() {
std::vector<int> arr = {5, 3, 8, 4, 2};
std::cout << "Original array:\n";
for (const auto& num : arr) {
std::cout << num << " ";
}
std::cout << "\n";
monkey_sort(arr);
std::cout << "Sorted array after monkey sort:\n";
return 0;
}
```
阅读全文