桶排序(又称箱排序)是一种基于分治思想、效率很高的排序算法,其核心思想是,讲数据依次放入顺序摆放的若干个桶内,然后每个桶内元素再进行排序,完后成将桶内元素合并,得到最终排序结果。
桶排序算法在稀疏数列中,表现不好,但它是下一篇文章要介绍的基数排序算法的底层原理。
代码示例
import math def bucket_sort(arr, cell_num=20, max_num=100): # 桶的数量 bucket_num = math.ceil(max_num / cell_num) buckets = [[] for _ in range(bucket_num)] # 计算属于那个桶,并添加 0-49 50-99 ... for i in arr: idx = min(i // cell_num, bucket_num - 1) buckets[idx].append(i) # 排序 for j in range(len(buckets[idx])-1, 0, -1): if buckets[idx][j] < buckets[idx][j-1]: buckets[idx][j] , buckets[idx][j-1] = buckets[idx][j-1] , buckets[idx][j] arr.clear() for bc in buckets: arr.extend(bc) lst = [35, 30, 32, 90, 86, 33] bucket_sort(lst) print(lst)
本文为 陈华 原创,欢迎转载,但请注明出处:http://edu.ichenhua.cn/read/270
- 上一篇:
- Sklearn特征提取之卡方过滤
- 下一篇:
- Sklearn特征提取之F检验和互信息法