C++桶排序(非常易懂【嘿嘿嘿】)

C++ 桶排序

排序原理

数据结构设计:链表可以采用很多种方式实现,通常的方法是动态申请内存建立结点,但是针对这个算法,桶里面的链表结果每次扫描后都不同,就有很多链表的分离和重建。如果使用动态分配内存,则由于指针的使用,安全性低。所以,笔者设计时使用了数组来模拟链表(当然牺牲了部分的空间,但是操作却是简单了很多,稳定性也大大提高了)。共十个桶,所以建立一个一维数组,行向量的下标0—9代表了10个桶,每个行形成的一维数组则是桶的空间。
下面展示一些 。
如果是:2 5 3 4 2
这几个数字,那么:

const a=5;//这里所有数字中最大的数字为其下标
int x[a];

平均情况下桶排序以线性时间运行,接下来就来讲解它的算法:
假如有1号2号3号4号四个桶,有1 4 3 2四个数,那么排序(从小到大)从1到2开始:1和1号桶的编号相应,所以1存到1号桶,4和编号4相同,所以存到4号桶,3和编号3一样所以存到2号桶2和编号儿一样所以存到二号桶,然后再从1.2.3.4号桶依次到处所存的数字,可得从小到大排好顺序的数字:1 2 3 4
同样这几个桶,如果是数字1 4 4 2 3 4 2
那么
1>>1
4>>4
4>>4
2>>2
3>>3
4>>4
2>>2
那么1号桶有一个,二号桶有两个,三号通有一个,四号桶有三个
从一号通道四号桶依次到出,结果为:1 2 2 3 4 4 4

代码解析

#include <bits/stdc++.h>

这是这个代码所要用的头文件

#include <bits/stdc++.h>
int main()
{
   
	
	return 0;
}

动手前,先把代码框架写好!

  • 7
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 8
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值