Code Bye

这个基数排序算法有问题吗,为什么不能实现排序

template<class T>
int Sort<T>::CoutDigit(T a[], int size)
{
	int d = 1;
	int c = 10;
	int i;
	for (i = 0; i < size; i++)
	{
		while (a[i] >= c)
		{
			c *= 10;
			d++;
		}
	}
	return d;
}
template<class T>
void Sort<T>::RadixSort(T a[], int size)
{
	int i, j, k, m;
	const int radix = 10;
	int digit;
	digit = CoutDigit(a, size);
	queue<T> derek[radix];
	for (j = 1, i = 0; i < digit; j *= radix, i++)
	{
		for (i = 0; i < size; i++)
			derek[(a[i] / j) % radix].push(a[i]);
		for (k = m = 0; m < radix; m++)
		{
			while (!derek[m].empty())
			{
				a[k++] = derek[m].front();
				derek[m].pop();
			}
		}
	}
}
解决方案

20

各种排序算法动画演示http://www.webhek.com/misc/comparison-sort/

40

代码功能归根结底不是别人帮本人看或讲解或注释出来的;而是被本人静下心来花足够长的时间和精力亲自动手单步或设断点或对执行到某步获得的中间结果显示或写到日志文件中一步一步分析出来的。
提醒:再牛×的老师也无法代替学生本人领悟和上厕所!
单步调试和设断点调试(VS IDE中编译连接通过以后,按F10或F11键单步执行,按Shift+F11退出当前函数;在某行按F9设断点后按F5执行停在该断点处。)是程序员必须掌握的技能之一。

CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明这个基数排序算法有问题吗,为什么不能实现排序