排序算法--桶排序

核心思想为分区间排序后合并。适用于数据均匀分布在一个范围内,或浮点数排序或范围明确的数据。如果需要处理整数或其他数据范围,可以通过调整BUCKET_RANGE的计算方式实现,例如对[0,100)的整数排序:

int index = arr[i] / 10; // 每10个单位一个桶

 

#include <stdlib.h>
#include <assert.h>

// 桶结构体(动态数组实现)
typedef struct {
    float* data;    // 桶内数据
    int count;      // 当前元素数量
    int capacity;   // 桶容量
} Bucket;

// 创建桶并初始化
Bucket create_bucket(int init_capacity) {
    Bucket b;
    b.data = (float*)malloc(init_capacity * sizeof(float));
    assert(b.data != NULL);
    b.count = 0;
    b.capacity = init_capacity;
    return b;
}

// 向桶中插入元素(自动扩容)
void bucket_insert(Bucket* b, float value) {
    if (b->count >=
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

和风化雨

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值