#include<iostream>
using namespace std;
#include<algorithm>
#define NUM 10
void print(int* p, int len);
void radix_sort(int *arr,int len,int max)
{
//创建临时数组
int * p = new int[max + 1];
//初始化数组
fill(p, p + max + 1, -1);
//for (int i = 0; i < max + 1; i++)
//{
// p[i] = -1;
//}
//排序
for (int i = 0; i < len; i++)
{
p[arr[i]] = arr[i];
}
//把p数组元素赋值给arr
int j = 0;
for (int i = 0; i < max+1; i++)
{
if (p[i] != -1)
{
arr[j++] = p[i];
}
}
//释放内存
//delete []p;
}
void print(int * arr ,int len )
{
for (int i = 0; i < len; i++)
{
cout << arr[i] << " ";
}
cout << endl;
}
int main()
{
int arr[NUM] = { 96,5,87,9,5,6,85,-8,8,7 };
int len = sizeof(arr) / sizeof(arr[0]);
int max = 96;
radix_sort(arr, len, max);
print(arr, len);
system("pause");
return 0;
}
C++实现基数排序(详细代码)
于 2021-12-15 09:25:48 首次发布