用c++写一个简单桶排序代码
把8个数用桶排序排86,49,53,76,85,97,56,87。我想要学一下桶排序这个,但是我是初学者,代码不求简洁,只求易懂,不用多么高级的一些用法词啊什么的,可以写得长,但是用词要简单,意思就是写得长长也无所谓,反正每行能让刚刚学的人看懂
桶排的算法思想:
1、通过构建一个空桶,空桶数量与待桶排数量一样,再将待排各个元素分配到每个桶。而此时有可能每个桶的元素数量不一样,可能会出现这样的情况:有的桶没有放任何元素,有的桶只有一个元素,有的桶不止一个元素可能会是2+以上。(可以利用一个标识来标记它是否为空桶,比如,我下面的代码是用-1来标记它为空桶)
2、桶排公式,通过桶排公式=(待排元素最大值*待排元素数量)/待排元素最大值+1,这个公式决定待排元素应该放入哪个桶。它起决定作用。
3、利用其它排序算法在对每个桶且桶元素大于2个以上元素的再次排序。
其它排序算法是指,你可以用:冒泡排序算法,选择排序算法,直接插入排序算法,快速排序算法,堆排序算法,归并排序算法,希尔排序算法等等根据实际情况任选一种。
OK,到此,有了算法思想,下面给出代码。特别说明,下面的算法只是我个人为了演示,仅供参考,实际上应该有更加规范或更好的。
小希望对你有用和帮到你。
热门标签: