专栏文章

优化桶排序

算法·理论参与者 1已保存评论 0

文章操作

快速查看文章及其快照的属性,并进行相关操作。

当前评论
0 条
当前快照
1 份
快照标识符
@miqjawg0
此快照首次捕获于
2025/12/04 05:43
3 个月前
此快照最后确认于
2025/12/04 05:43
3 个月前
查看原文
简单桶排序会受到数字大小的影响导致超时或爆空间。

但在我优化之下,桶排序的时间复杂度降到 O(n)O(n)
且不会因为数字太大而爆空间,
这一切都归功于map
CPP
#include <map>
运用迭代器可以节省很多时间,且 mapmap 的映射只要不爆 intintlonglonglong long 就行了。
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 条评论,欢迎与作者交流。

正在加载评论...