php中文网 | cnphp.com

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 488|回复: 0

算法初步——桶排序

[复制链接]

2871

主题

2881

帖子

1万

积分

管理员

Rank: 9Rank: 9Rank: 9

UID
1
威望
0
积分
7285
贡献
0
注册时间
2021-4-14
最后登录
2024-9-20
在线时间
716 小时
QQ
发表于 2022-4-12 08:34:03 | 显示全部楼层 |阅读模式
桶排序实际上是将对应数字出现的次数存储在一个一维数组的对应位置,将所有数字放在对应的桶里之后,再从桶里按其对应出现的次数将数据拿出。

ps:这里介绍的桶排序算法并不是真正意义上的桶排序,真正的桶排序比这要复杂的多,我们以后介绍。
[mw_shl_code=applescript,true]#include<iostream>
using namespace std;

int a[11], t;
int main()
{
    for (int i = 0; i < 11; i++)
        a = 0;                    //将桶里的数字初始化为0,表示此时该数字出现0次
    for (int i = 0; i < 5; i++)        //循环读入5个数字
    {
        cin >> t;                    //先将数字赋值给变量t
        a[t]++;                        //进行计数
    }

    //接下来是从桶中拿出数据的过程
    for (int i = 0; i < 11; i++)
    {
        for (int j = 0; j <= a; j++)
            cout << i << ' ';
    }
    cout << endl;
    return 0;
}[/mw_shl_code]
以上是按从小到大的顺序进行排序的,如要从大到小进行排序,只需要将for(int i=0;i<11;i++)改为for(int i=10;i>=0;i--)

这个算法就好比有11个桶,标号0~10。每出现一个数,就在其对应的桶里插入一个旗子,最后只要数一数每个桶中的旗子数即可。例如2号桶中有1个旗子,表示2出现了一次,以此类推。
image.png

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|php中文网 | cnphp.com ( 赣ICP备2021002321号-2 )

GMT+8, 2024-9-20 08:45 , Processed in 0.186071 second(s), 34 queries , Gzip On.

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2020, Tencent Cloud.

申明:本站所有资源皆搜集自网络,相关版权归版权持有人所有,如有侵权,请电邮(fiorkn@foxmail.com)告之,本站会尽快删除。

快速回复 返回顶部 返回列表