Experimente la versión C ++ de clasificación radix de generación de modelos CSDN AI

  • Radix Sort (Radix Sort) es un algoritmo de clasificación no comparativo que clasifica según cada dígito del número. El siguiente es un ejemplo de una implementación en C++ de tipo radix:
#include<iostream>
using namespace std;

// 获取数组中最大值
int getMax(int arr[], int n) {
    
    
    int max = arr[0];
    for (int i = 1; i < n; i++) {
    
    
        if (arr[i] > max) {
    
    
            max = arr[i];
        }
    }
    return max;
}

// 使用计数排序对数组按照指定的位数进行排序
void countSort(int arr[], int n, int exp) {
    
    
    int output[n];
    int count[10] = {
    
    0};

    // 统计每个数字出现的次数
    for (int i = 0; i < n; i++) {
    
    
        count[(arr[i] / exp) % 10]++;
    }

    // 将count[i]更新为包含i的元素个数
    for (int i = 1; i < 10; i++) {
    
    
        count[i] += count[i - 1];
    }

    // 根据计数数组将元素放到正确的位置上
    for (int i = n - 1; i >= 0; i--) {
    
    
        output[count[(arr[i] / exp) % 10] - 1] = arr[i];
        count[(arr[i] / exp) % 10]--;
    }

    // 将排序好的元素复制到原数组
    for (int i = 0; i < n; i++) {
    
    
        arr[i] = output[i];
    }
}

// 基数排序函数
void radixSort(int arr[], int n) {
    
    
    int max = getMax(arr, n);

    // 对每个位数进行计数排序
    for (int exp = 1; max / exp > 0; exp *= 10) {
    
    
        countSort(arr, n, exp);
    }
}

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

int main() {
    
    
    int arr[] = {
    
    170, 45, 75, 90, 802, 24, 2, 66};
    int n = sizeof(arr) / sizeof(arr[0]);
    radixSort(arr, n);
    cout << "RadixSorted Array:" << endl;
    printArray(arr, n);
    return 0;
}
C:\Users\Administrator\CLionProjects\untitled1\cmake-build-debug\untitled1.exe
RadixSorted Array:
2 24 45 66 75 90 170 802

Process finished with exit code 0
  • Este es un ejemplo de una implementación simple de clasificación radix, que clasifica la matriz de acuerdo con cada dígito mediante clasificación por conteo. En la función principal, definimos una matriz arr para ordenar y luego llamamos a la función radixSort para ordenar la matriz. Finalmente, imprimimos la matriz ordenada.
  • ¡Espero que este ejemplo te ayude!

Supongo que te gusta

Origin blog.csdn.net/m0_38127487/article/details/132213452
Recomendado
Clasificación