数据结构与算法:基数排序的C++实现

任务:利用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;
}

猜你喜欢

转载自blog.csdn.net/weixin_44928892/article/details/109076816