桶排序 一、什么是桶排序二、桶排序的实现三、复杂度分析四、应用 一、什么是桶排序 桶排序(Bucket Sort):如果待排序的数字是有范围整数,可以用数组下标与数值一一对应的方法存入数组中,然后按照数组下标输出数据,得到结果就是有序序列。 二、桶排序的实现 int main() { int i = 0; const int n = 10; int arr[n] = {9, 0, 8, 1, 7, 2, 6, 3, 5, 8}; int a[n + 1] = {0}; for (i = 0; i < n; i ++) { a[arr[i]] ++; } for (i = 0; i < n; i ++) { cout << a[i] << " "; } cout << endl; return 0; } 三、复杂度分析 n为元素的个数,m为桶的个数。如果算上输出的话,桶排序的时间复杂读是O(n + m),这是非常快的排序。但是有时候对空间的消耗太大了,比如待排序的元素,跨度很大如:1、1000、100000,太浪费空间,这种情况下不适合桶排序。 四、应用 可以用桶排序完成去重与计数。 去重:将数据装进桶中后,然后按照arr[i] > 0,来完成去重。 计数:桶中的数据就是该元素出现的次数。