算法笔记--简单桶排序
2018-02-12 14:24
246 查看
题目:
假设班上有5个同学,这学期期末考试,这5个同学分别考了5分、3分、5分、2分、8分,满分是10分。接下来将分数从大到小排序,排序后是8 5 5 3 2。实现:
//**【简单桶排序】**// void simpleBarrelSort() { int a[11], i, j, t; for (i = 0; i < 11; ++i) { a[i] = 0; } for (i = 1; i <= 5; ++i) { scanf("%d", &t); a[t]++; } //从大到小输出 for (i = 10; i >= 0; --i) { for (j = 0; j < a[i]; ++j) { printf("%d\t", i); } } printf("\n"); //从小到大输出 for (i = 0; i < 11; ++i) { for (j = 0; j < a[i]; ++j) { printf("%d\t", i); } } }时间复杂度O(m+n).
这个算法非常浪费内存空间。
算法思想:
这个算法就好比有11个桶,编号从 0~10 。每出现一个数,就在对应的编号的桶中放一个小旗子,最后只要数数每个桶中有几个小旗子就行了。例如 2号桶中有 1 个小旗子,表示 2 出现了一次;3号桶中有个 1 个小旗子,表示 3 出现了一次; 5号桶中有 2 个小旗子,表示 5 出现了两次; 8号桶中有 1 个小旗子,表示 8 出现了一次。参考啊哈磊的《啊哈!算法》一书。
相关文章推荐
- 数据结构学习笔记一:简单排序与查询算法
- 电商笔记-08(Reids展示品牌名称与价格排序简单算法.PS:特绕)
- 简单排序算法学习笔记-冒泡排序算法详解
- 几句话描述简单算法——排序与搜索
- 算法学习笔记二:插入排序及循环不变式
- 算法导论学习笔记(六):计数排序与基数排序
- java数据结构与算法-简单排序-插入排序
- 算法笔记_071-SPFA算法简单介绍(Java)
- 基础算法之排序(2)--简单选择排序
- 算法学习之简单排序
- 算法笔记--基数排序
- Oracle笔记(四) 简单查询、限定查询、数据的排序
- Oracle笔记(四) 简单查询、限定查询、数据的排序
- 简单选择排序的算法实现
- 基本算法简单实现-二分法查找、合并排序、冒泡排序、插入排序、选择排序、快速排序
- Java数据结构与算法--简单排序
- 三种简单排序算法及实现(引用)
- 算法笔记第一章--梳排序
- 简单排序算法之插入排序、选择排序和冒泡排序
- oracle笔记之简单查询与限定查询和排序