任务:利用C++实现基数排序
代码如下:
#include <iostream>
#define NUM 7
using namespace std;
void Print(int* a, int len);//打印当前数组
void RadixSort(int* a, int len, int max);//基数排序
int main()
{
int a[NUM] = { 12,48,56,89,33,2,7 };
cout << "before sort: ";
Print(a, NUM);
RadixSort(a, NUM, 89);
cout << "after sort: ";
Print(a, NUM);
while (1);
return 0;
}
//打印当前数组
void Print(int* a, int len)
{
for (int i = 0; i < len; i++)
{
cout << a[i] << " ";
}
cout << endl;
}
//基数排序
void RadixSort(int* a, int len, int max)
{
//定义排序数组b装填待排序数组a
int* b = new int[max + 1];
int i;
for (i = 0; i < max + 1; i++)
{
b[i] = -1;
}
for (i = 0; i < len; i++)
{
b[a[i]] = a[i];
}
//将装填好的数组a从数组b中取出,由于数组的天然有序性,取出后的数组a即为有序数组
int j = 0;
for (i = 0; i < max + 1; i++)
{
if (b[i] != -1)
{
a[j++] = b[i];
}
}
delete[] b;
}