Files
python/TangDou/LuoGuBook/L9_2_BucketSort.md
HuangHai 1f397eca87 'commit'
2025-08-30 18:35:01 +08:00

1.2 KiB
Raw Permalink Blame History

计数排序

一、前置知识

C++求整数数组长度的办法

int len = sizeof(a) / sizeof(int);

二、算法步骤

  • 准备数组中 最大值那么多的桶,枚举每一个数字,发现一个数字,就将对应桶号中的个数加$1$。

  • 从头开始枚举每个 有可能的桶,看看里面有几个计数,就打印几个当前的桶号。

三、算法动画

### 四、代码实现

#include <bits/stdc++.h>

using namespace std;
const int INF = 0x3f3f3f3f;
const int N = 1e6 + 10;
int a[] = {1, 2, 5, 4, 3, 2};
int b[N];
int mx, mi = INF;

int main() {
    // C++求整数数组长度的办法
    int len = sizeof(a) / sizeof(a[0]);

    //最大值,最小值
    for (int i = 0; i < len; i++)
        mx = max(mx, a[i]), mi = min(mi, a[i]); //最大值5最小值1

    //放入桶
    for (int i = 0; i < len; i++) b[a[i]]++;

    //排序结果
    for (int i = mi; i <= mx; i++) {
        for (int j = 1; j <= b[i]; j++)
            printf("%d ", i);
    }

    return 0;
}