📜  Stooge Sort的C ++程序(1)

📅  最后修改于: 2023-12-03 15:20:21.282000             🧑  作者: Mango

Stooge Sort的C++程序

Stooge Sort是一种基于递归的简单排序算法,它的原理是将待排序的数组或列表分为三个部分:左边的2/3、右边的2/3和中间的1/3。然后按照特定的顺序递归地对左右两部分进行排序,并再次对整个数组进行排序。这个过程一直持续到排序完成。

以下是Stooge Sort的C++程序示例:

#include <iostream>
using namespace std;

// Stooge Sort函数
void stoogeSort(int arr[], int low, int high) {
    if (low >= high)
        return;

    // 如果前面的元素大于后面的元素,交换它们的位置
    if (arr[low] > arr[high])
        swap(arr[low], arr[high]);

    // 如果至少有3个元素
    if (high - low + 1 > 2) {
        int k = (high - low + 1) / 3;

        // 递归地对前2/3的部分进行排序
        stoogeSort(arr, low, high - k);

        // 递归地对后2/3的部分进行排序
        stoogeSort(arr, low + k, high);

        // 再次对前2/3的部分进行排序,确保前两个部分的最大元素在最后
        stoogeSort(arr, low, high - k);
    }
}

// 打印数组
void printArray(int arr[], int size) {
    for (int i = 0; i < size; i++)
        cout << arr[i] << " ";
    cout << endl;
}

int main() {
    int arr[] = {5, 8, 2, 10, 3};
    int n = sizeof(arr) / sizeof(arr[0]);

    cout << "原始数组:" << endl;
    printArray(arr, n);

    stoogeSort(arr, 0, n - 1);

    cout << "排序后的数组:" << endl;
    printArray(arr, n);

    return 0;
}

以上程序实现了Stooge Sort算法,可以将一个整数数组进行排序。程序中的stoogeSort()函数用于递归地对数组的一部分进行排序,printArray()函数用于打印数组。

运行程序后,将会输出原始数组和排序后的数组。

这段C++代码可以用markdown格式来展示,如上所示。