问题标题: 酷町堂:桶排序

0
0

0
已采纳
黄依成
黄依成
中级天翼
中级天翼

桶计数课后讲义(火箭v2)

桶计数

引言

       假设有一堆标了号码的球散落一地,需要我们统计标号1的球有多少个?标号2的球有多少个?标号3的球有多少个?……
       如果我们对球不做整理,直接去数,可能眼睛数花了还没数对。
       此时我们准备好若干个桶:1号桶,2号桶,3号桶,…… 将每种标号的球投入对应的桶中,这样每个桶中球的个数就比较清楚了。
 

一.定义桶数组

1. 桶数组要定义在主函数外,或者定义时将数组元素值初始化为0。

因为我们要用数组元素来计数,每个数组元素的初值都要确保是0。

2. 桶数组的大小要根据要计数的数据的最大值来确定。

因为桶数组的下标对应要计数的数据,要保证桶数组计数时下标不越界。

二.桶数组计数的过程

对于某数组中的数,我们想要统计不同的数有分别有多少个。

image.png

则我们可以定义一个桶数组b[10]; (桶数组要保证最大下标不小于5)
image.png

一开始桶数组中所有元素的值都是0,然后我们遍历a数组,开始计数:

遍历a数组:1,2,3,2,3,5,1,5,2,3
遇到1,b[1]++ ;
遇到2,b[2]++ ;
遇到3,b[3]++ ;
遇到2,b[2]++ ;
遇到3,b[3]++ ;
遇到5,b[5]++ ;
遇到1,b[1]++ ;
遇到5,b[5]++ ;
遇到2,b[2]++ ;
遇到3,b[3]++ ;

所以最后b[1]=2,b[2]=3,b[3]=3,b[4]=0,b[5]=2。
表示原来的数组中 1有2个,2有3个,3有3个,4没有,5有2个。
 

三.本节知识点脉络

image.png

0
我要回答