基数排序基于分别排序,分别收集,所以是稳定的。但基数排序的性能比桶排序要略差,每一次关键字的桶分配都需要O(n)的时间复杂度,而且分配之后得到新的关键字序列又需要O(n)的时间复杂度。假如待排数据可以分为d个关键字,则基数排序的时间复杂度将是O(d*2n) ,当然d要远远小于n,因此基本上还是线性级别的。
基数排序的空间复杂度为O(n+k),其中k为桶的数量。一般来说n>>k,因此额外空间需要大概n个左右。
using System;
public class Program
{
public static void Main(string[] args)
{
int[] array = { 43, 69, 11, 72, 28, 21, 56, 80, 48, 94, 32, 8 };
RadixSort(array);
ShowSord(array);
Console.ReadKey();
}
private static void ShowSord(int[] array)
{
foreach (var num in array)
{
Console.Write($"{num} ");
}
Console.WriteLine();
}
/// <summary>
/// 基数排序
/// </summary>
/// <param name="a