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>usingnamespace std;// 获取数组中最大值intgetMax(int arr[],int n){
int max = arr[0];for(int i =1; i < n; i++){
if(arr[i]> max){
max = arr[i];}}return max;}// 使用计数排序对数组按照指定的位数进行排序voidcountSort(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];}}// 基数排序函数voidradixSort(int arr[],int n){
int max =getMax(arr, n);// 对每个位数进行计数排序for(int exp =1; max / exp >0; exp *=10){
countSort(arr, n, exp);}}// 打印数组元素voidprintArray(int arr[],int n){
for(int i =0; i < n; i++){
cout << arr[i]<<" ";}
cout << endl;}intmain(){
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);return0;}
C:\Users\Administrator\CLionProjects\untitled1\cmake-build-debug\untitled1.exe
RadixSorted Array:22445667590170802
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.