java - 奇怪的桶排序基准结果?
问题描述
基准测试结果
即使列表中的元素越来越多,这种桶排序也会变得更加高效。我正在寻找一个答案,为我指明正确的方向,以了解为什么会发生这种情况。
Test:[1] | Average Bench Time:[11ms] | Elements Sorted:[1 000 000]
Test:[2] | Average Bench Time:[11ms] | Elements Sorted:[2 000 000]
Test:[3] | Average Bench Time:[4ms] | Elements Sorted:[3 000 000]
Test:[4] | Average Bench Time:[7ms] | Elements Sorted:[4 000 000]
Test:[5] | Average Bench Time:[7ms] | Elements Sorted:[5 000 000]
Test:[6] | Average Bench Time:[10ms] | Elements Sorted:[6 000 000]
Test:[7] | Average Bench Time:[12ms] | Elements Sorted:[7 000 000]
Test:[8] | Average Bench Time:[12ms] | Elements Sorted:[8 000 000]
Test:[9] | Average Bench Time:[15ms] | Elements Sorted:[9 000 000]
Test:[10] | Average Bench Time:[17ms] | Elements Sorted:[10 000 000]
这里是排序代码
public void Sort() {
int[] bucket = new int[getMax() + 1];
for (int i = 0; i < size; i++)
bucket[data[i]] = bucket[data[i]] + 1;
int index = 0;
for (int i = 0; i < bucket.length; i++) {
for (int k = 0; k < bucket[i]; k++) {
data[index] = i;
index++;
}
}
}
我是 stackoverflow 的新手,所以我不确定非代码相关的问题是否可以接受。
事件的逻辑流程
- 每个测试都有一个最大大小来填充数组。
- 将随机整数放入每个索引中,填充整个数组
- 存储系统时间
- 列表已排序
- 系统时间比较
- 结果显示
解决方案
推荐阅读
- c# - 程序集“Ninject.Extensions.Interception.DynamicProxy”中的方法没有实现
- python - 选择索引数据框中的列
- windows-10 - Access/MySQL - 向后兼容的迁移;链接表
- httprequest - Microsoft Teams webhook 有效负载包含不可用的 Teams ID
- javascript - Angular:跨字段验证不适用于 setError()
- javascript - 如何将 pixi.js 动画插入应用到 babylon.js 的纹理中
- python - 您如何专门将元素添加到二维数组?
- python - Python:合并列表中的相邻数字
- google-cloud-dataprep - Dataprep 流是否可以归非个人 Google 帐户或服务帐户所有?
- c# - 使用 C# 从 excel 单元格中获取 DateTime 值