该算法的时间复杂度是O(M+N),M为桶的个数,N为待排序的个数
缺点:
1.不适用于小数
2.当数值过多,太浪费空间,比如数值范围为0~99999,那需申请100000个变量,也就是要写成a[1000000]。
代码如下:
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace ConsoleApplication1 { public class Program { public static void Main(string[] args) { int[] nums = new int[9] { 2, 1, 9, 2, 7, 3, 1, 8, 2 };//初始化一个数组,其中有9个数,每个数都不大于10,这里假定是我们输入的数,需要从小到大排序 int[] a = new int[11];//因为每个数都不大于10,所以初始化一个包含11个数的数组a int i, j, t; for (i = 0; i <= 10; i++) a[i] = 0;//给a数组赋值都为0 for (i = 0; i < nums.Length; i++) { t = nums[i];//获取当前的数 a[t]++;//进行计数 } for (i = 0; i <= 10; i++)//依次判断a[0]~a[10] for (j = 1; j <=a[i]; j++)//出现了几次就输出几次 Console.Write(" " + i); } } }
本文转自叶超Luka博客园博客,原文链接:http://www.cnblogs.com/yc-755909659/p/3986443.html,如需转载请自行联系原作者