编辑代码

#include <iostream>
using namespace std;

int findMax(int arr[], int len) {
    int max = arr[0];

    for(int i = 0; i < len; i++){
        if(arr[i] > max) {
            max = arr[i];
        }
    }

    return max;
}

int calBitCount(int max) {
    int count = 0;

    while (max > 0) {
        count++;
        max = max / 10;
    }

    return count;
}

int getBitValue(int value, int bit) {
    for(int i = 0; i < bit -1; i++) {
        value = value / 10;
    }
    value = value % 10;
    return value;
}

void radixSort(int arr[], int len) {

    //1.找出最大值,计算出需要排序的位
    int max = findMax(arr, len);
    int bitCount = calBitCount(max);

    //2.创建排序数组
    int radixCount = 10;
    int* count = new int[radixCount]();
    int *tempArray = new int[len]();

    //3.对每一位进行排序
    for(int b = 0; b < bitCount; b++) {
        //3.1清空排序数组,把每个值赋予0

        //3.2统计计数数组下标对应元素个数
        for(int i = 0; i < len; i++) {
            int bitValue = getBitValue(arr[i], b);
        }

        //3.3 累计算出小于等于计数数组小标对应元素的个数
        for(int c = 0; c < radixCount; c++) {

        }

        //3.4 利用累加值和临时数组进行排序
        for(int j = len-1; j >= 0; j--) {

        }

        //3.5 临时数组数据拷贝回原数组

    }
    //内存清理
    delete tempArray;
    delete count;
}

void printArray(int arr[], int len) {
    for (int i = 0; i < len; i++) {
         cout << arr[i] <<" ";
    }
}

int main() {

    int arr[] = {3,44,38,5,47,15,36,26,27,2,46,4,19,50,48};
    int len = sizeof(arr) / sizeof(int);

    printArray(arr, len);
    radixSort(arr, len);
    printArray(arr, len);

	return 0;
}