学习日记--桶排序
来源:互联网 发布:风行网络电影官方下载 编辑:程序博客网 时间:2024/06/05 22:44
最近有学习基数排序(桶排序),先写下简单的一次性桶排序。
方法:
//排序数组a[],假象桶bucket[],临时存放数组tmp[] ,需要方法tmp=a.clone()
1.复制数组 tmp=a.clone();
2.设置桶的长度bucket.length= a.max-a.min+1 ;
3.将数字放入桶中并记录数字放入次数 ;
4.调整桶最终的记录次数;
4.根据桶的记录将临时数组里的数据按顺序放回原数组中
public class bucketSort {
int a[] = { 10, 9, 8, 7, 6, 5, 4, 3, 2, 1 };
public static void main(String[] args) {
int a[] = { 1, 2, 3, 4, 8, 9, 4, 6, 5, 7, 8, 5 };
System.out.println("排序前:");
for (int b : a) {
System.out.print(b + " ");
}
int min = 1, max = 9;
int tmp[] = new int[a.length];
tmp = a.clone();// 复制数组临时存放
int[] bucket = new int[max - min + 1];// 创建桶
/* 排序过程 */
// 将数字放入桶中
for (int i = 0; i < a.length; i++) {
// 记录数字出现次数
bucket[a[i] - min]++;// a[i]-min规定第一个桶放入什么数字,后面的桶数字依次增加
}
/*
* 调整每个桶记录的次数
* 因为每个桶能放的数据是依次增大的
* 所以每个桶最后记录的次数=自己原来记录的次数+前面的所有桶记录的次数
* 依次叠加即可
*/
for (int k = 1; k < bucket.length; k++) {
bucket[k] = bucket[k] + bucket[k - 1];// 后一个桶记录的次数
}
// 按照桶记录的数据将临时数组的数据按顺序放回原来的数组中
for (int h = 0; h < a.length; h++) {
//对照入桶的顺序 bucket[a[i] - min]++,tmp[]=a[]即可得到出桶顺序
a[--bucket[tmp[h] - min]] = tmp[h];
}
/* 排序过程end */
System.out.println("排序后:");
for (int b : a) {
System.out.print(b + " ");
}
}
}// END
- 学习日记--桶排序
- 学习日记:冒泡排序
- 学习日记-排序方法集锦
- 黑马程序员-TreeSet排序学习日记 .
- C++学习日记——成绩排序
- C++学习日记——excel排序
- 算法学习日记 字典法排序
- JAVA学习日记----------排序篇01
- JAVA学习日记----------排序篇02
- JAVA学习日记----------排序篇03
- C++学习日记/4类排序算法
- 算法学习日记 -----链表以及箱子排序算法
- C++、C#、java算法学习日记03----插入排序
- C++、C#、java算法学习日记04----二分插入排序
- Java学习日记 求最值 排序 选择 冒泡 交换
- 算法导论学习日记(1)--插入排序
- 算法导论学习日记(2)--选择排序
- 算法导论学习日记(3)--合并排序
- Spring+Quartz配置定时任务
- 【NOIP 2012】借教室 括号法
- tomcat结合nginx使用小结
- 第九周切面条
- 从0开始学习 GITHUB 系列之「加入 GITHUB」
- 学习日记--桶排序
- 理解 Linux 的硬链接与软链接
- ShareSDK实现一键分享
- laravel 三 控制器
- 从0开始学习 GITHUB 系列之「GIT 速成」
- JVM内幕:Java虚拟机详解
- POJ 2455 二分+网络流
- 延时提示框
- Ubuntu 14.04 64 bit+ Torch 7 + CUDA7安装配置