Loading

桶排序法-数据结构算法入门

  桶排序从 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);
     }
}    

结果如图:

 



 

(最近在学习数据结构,本章是观看《啊哈!算法》记录自己学习笔记及分享,如有高见请多多指教!)

posted @ 2020-06-10 20:11  YoungQ  阅读(231)  评论(0)    收藏  举报