00:00
怎么规定?首先我们这个经过几轮是跟我们这个整个数组里面最大的那个数的位数有关。第二个就是取模的地方,你看取模的地方是瑞第第一,第二轮我们是除以十,模上这个100,第第三轮是除以100,那第一轮是除以多少呢?大家看找规律,第三轮它虽然没有除,是不是我们可以写成除了一个一啊。除了一个一再模式,这样就有关系,看第一个是11,第二个是100,第三一轮是100是不是,呃第第第二轮是十,第三轮是100,是不是十的一个整数倍啊。那同学们,那现在老师不啰嗦了,我现在直接将其套用。根据前面的推导。推导过程,我们可以得到最终的代码,最终的这个基数。排序的代码OK,非常简单。
01:03
怎么做呢?怎么做前面这个,前面这个不动是不是对for循环,但for循环的问题是我们需要。干一件这样事情,先得到最大的位数。最大。最大的这个就是数组中,数组中最大的这个数的位数。的位数。好,这个呢,我们要先第一次搞定,这个怎么做呢?来,同学们,我先定一个max。我们找到最大这个VR max等于二零,假定我们数字里面第一个就是最大的。假定第一个就是最大的啊,我们这假设。假设。第一个数就是最大数,但不一定不一定对不对,不一定,那么现在我们就变例吧,For循环in ti等于一。I小于。
02:01
对不对,I加加,I加加过后呢,我们找一下啊,如果RI它大于我们这个max。说明什么问题?说明我们假定的这个max不是最大的,于是我把这个max呢改成对应的这个R。大家喜欢。那现在呢?这个最大的值已经找到了,我们再得到最大的位数,好,我们得到最大数的位是几位数?最大数是几位数?那这个怎么办呢?呃,有很多方法,我写一个比较简单的方法,好吧,我就max Le,我怎么做呢?我用一个巧妙的方法给大家玩一把,我让max加上。一个字符串。呃,加上一个空串变成中串,认识一下就可以了,这个很巧妙,就是让这个max值加上一个空串,把它变成一个中串,再求出认识就完事了。好,最大位数就有了,那待会最大位数就决定我们后面有几个几轮对不对,好嗯,这个已经搞定了,下边呢,我们就可以来把这个处理一下了,啊有了它了,现在开始老师写代码了。
03:11
这里我们使用循环。循环将。将这个将这个代码处理一下,怎么处理呢。来,我们以第一轮为例,把这个第一轮代码我先拷一份。大家看代码了啊,这一轮就是我们一轮完整的处理,我先把它拷贝到上面去。来,我先不循环,我一共要int多少次呢?各位同学多少次?I等于零,I小于什么max?点什么,哎,就是马认识了I是不是I加呀,各位同学。是不佳。是不是爱加加?那哀加加过后?把我们这段代码。
04:00
放进去就可以了。那方进局我们可以可以调了,这个就不要写第几轮了。对吧,就是针对每一个进行排序,那就是针对,就是第一次我们就是求的是呃各位,第二次求的是百位,那么这样就要把这个注释改一下,就是干什么呢?每针对每一轮啊。这对,呃,这是这是针对每个数,每个元素对应的对应的这个位进行排序。第一次可以这样写啊,第。第一次是这个,各位。第二次第二二次,第二次40位,第三次第三次是百位。那一类推,那怎么体现出这个位呢?大家看这是一肯定不行的,所以说为了处理这个事情呢,我们再新加一个变量叫什么呢?我们叫做N,我把这个N等于一大家看清楚啊。
05:00
然后呢,N我给他D,我我给它附一个,呃,我看这地方是N等于一,N等于一没问题,那这个地方这个我们就把它换成N。但是呢,你下次循环的时候,这个N呢又变成十,所以说我在这呢,给它来一个不长,怎么写呢?N乘以等于多少十,大家能看懂吗?大家能看懂吧,就是第一次我们进来,这个N等于一,第二次循环,这个N先乘以十变成十,再下次N再乘以十就变成100了。明白这意思吧,好,OK,那这个地方,呃,取出每个元素对应的位数,每个元素对应。胃的子。放入书中,按照这个进行排序哦,这编辑每个桶放到原输出,如果有数据怎么怎么处理,对不对,放进去这个就不是第一轮了,是第轮。第几轮呢?OK,那这个地方我们应该写出I加一吧,因为是D加一轮,处理以后把它置为零下面就可以,每处理一次我们就打一次,现在就应该把这个一改成什么呢?改成I加一轮。
06:10
对不对,同学们应该能看懂吧,好代码就改完了,也就是说我们最终这一段代码就是我们所谓的。基数排序,那下面的代码呢,就离我们而去,不要了。因为这个是我们一个推导的过程,主要是为了让大家理解,因为我讲课嘛,我讲课的目的不是说诶韩老师告诉你们这个人写没有意义,你往上一堆一堆的,那么我我的对老师来讲呢,最主要的目的,或者是我们希望达到效果是讲完了过后你能知道诶怎么来的。如果我上来就这么写,我相信大部分同学是很难理解的。我现在逆序我就按照一个按照一个推导功能给你写出来代码,就大家看起来比较轻松了,对不对?好同学们,我们现在运行一下,看看有没有问题啊,现在我们已然把它改了,来同学们我们执行一把。
07:03
运行值我们看效果,诶我们发现呢。没问题,是不是最后31453214等正确。
我来说两句