专栏文章
优化桶排序
算法·理论参与者 1已保存评论 0
文章操作
快速查看文章及其快照的属性,并进行相关操作。
- 当前评论
- 0 条
- 当前快照
- 1 份
- 快照标识符
- @miqjawg0
- 此快照首次捕获于
- 2025/12/04 05:43 3 个月前
- 此快照最后确认于
- 2025/12/04 05:43 3 个月前
简单桶排序会受到数字大小的影响导致超时或爆空间。
但在我优化之下,桶排序的时间复杂度降到 ,
且不会因为数字太大而爆空间,
这一切都归功于map。
CPP#include <map>
运用迭代器可以节省很多时间,且 的映射只要不爆 或 就行了。
CPP#include <iostream>
#include <map>//这个头文件必须加
#include <cmath>
#include <cstdio>
using namespace std;
void Bucket_Sort(int c[],int n) {
map <long long, long long> mp;//map开long long 防止数据过大
for (int i = 1; i <= n; i++){
mp[c[i]]++;//桶排序
}
for (auto it = mp.begin(); it != mp.end(); it++) {//迭代器
for (int i = 1; i <= it->second; i++)
cout << it->first << " ";//输出
}
}
int main()
{
int a[100005], n;
cin >> n;
for (int i = 1; i <= n; i++) {
cin >> a[i];
}
Bucket_Sort(a, n);//排序
//时间复杂度O(n)
//空间复杂度O(n)
return 0;
}
相关推荐
评论
共 0 条评论,欢迎与作者交流。
正在加载评论...