桶排序法-数据结构算法入门
桶排序从 1956 年就开始被使用,该算法的基本思想是由 E.J.Issac 和 R.C.Singleton 提出来的,该例子为桶排序的简化版,方便理解入门。
假设有一个整型数组,需要将数组中的元素从大到小排序并输出,数组中的元素最大值<=10,最小值>=0,数组如下:
1 int[] arr = { 1, 3, 6,8, 2, 8 };
如果第一次学算法的同学,建议先自行思考十分钟再继续往下看。
首先我们可以知道,数组的元素 MaxValue<=10,MinValue>=0 所以声明一个数组 :
int[] book = new int[11];
该数组的用意为用于记录数字出现的次数:如果出现数字 0,则将book数组中对应下标为0的元素+1。同理,出现数字 1,则将book数组中对应下标为1的元素+1 。
接下来我们遍历数组arr:
for (int i = 0; i < arr.Length; i++) { int a = arr[i]; book[a]++; }
遍历完成后,数组book已经记录了arr数组中每个元素出现的次数。此时只要将book数组打印出来,就可以看到排序后的效果:
for (int i = book.Length - 1; i >= 0; i--) { for (int j = 1; j <= book[i]; j++) { Console.WriteLine(i); } }
结果如图:
(最近在学习数据结构,本章是观看《啊哈!算法》记录自己学习笔记及分享,如有高见请多多指教!)