·什么是桶排序
桶排序就是我们先申请一个范围的数组(桶),我们的数组里面全部初始化为0,我们把所有要排序的元素按照数组的下标进行映射,如果这个元素存在,那么数组对应的下标的值加一,最后我们遍历这个数组,如果value大于0,我们就进行输出。下面放个图吧:
·代码
#include<iostream>
#include<vector>
int main()
{
std::vector<int> v1 = { 13, 25, 12, 9, 81, 38 };
int arr[101] = { 0 };
//桶排序
for (const auto&it : v1)
{
arr[it] += 1;
}
for (int i = 0; i < 101; i++)
{
if (arr[i] == 1)
{
std::cout << i << std::endl;
}
}
return 0;
}
这个算法是通过空间换取时间,复杂度取决于数组的长度m,我们可以写成O(n+m),可以近似等于O(n),空间复杂度就完全取决于数组的大小了。