学习日记--桶排序
2016-10-29 17:51
218 查看
最近有学习基数排序(桶排序),先写下简单的一次性桶排序。
方法:
//排序数组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
方法:
//排序数组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
相关文章推荐
- 桶排序程序
- 四书之《论语》学习日记11
- 算法总结系列之六: 桶排序(Bucket Sort)
- 桶排序及其应用
- 《算法导论》学习总结 — 8.第八章(2) 计数排序 && 基数排序 && 桶排序
- 关于桶排序(转)
- Mybatis学习日记(一)
- GPU(CUDA)学习日记(三)------ CUDA基本架构介绍以及编程入门!~~
- 桶排序
- 算法导论CLRS 8.4 桶排序
- 桶排序
- 【CLRS】《算法导论》读书笔记(三):计数排序(Counting sort)、基数排序(Radix sort)和桶排序(Bucket sort)
- 黑马程序员————学习日记【11】 【IO流】
- 桶排序
- 学习日记(三)浅识struts1,并搭建框架demo
- 桶排序
- 排序算法——桶排序
- 【啊哈!算法】算法1:最快最简单的排序——桶排序
- 【算法学习】线性时间排序-计数排序、基数排序和桶排序详解与编程实现
- 桶排序