import java.util.Arrays;
import java.util.LinkedList;
import java.util.Random;
/**
* Created by shiqiang on 2017/3/24.
* 桶排序
*/
public class BucketSort {
public static void main(String [] args){
int [] arr = {68,45,150,156,178,194,203,212,234,235,292,373,319,447,463,478,499,501,583,583,646,698,721,773,
796,828,831,903,917,977};
// ----------------------------------------
// 冒泡排序,用来对比结果
int max = 977;
/**
for (int i = 0; i < arr.length; i++) {
for (int j = i + 1; j < arr.length; j++) {
if (arr[i] < arr[j])
{
max = arr[j];
continue;
}
if (arr[i] >= arr[j])
{
max = arr[i];
arr[i] = arr[j];
arr[j] = max;
}
}
}
System.out.println(max);
System.out.println(Arrays.toString(arr));
*/
// ----------------------------------------
// 中间容器,(桶)
LinkedList<Integer>[] list = new LinkedList[10];
for (int i = 0; i < list.length; i++)
{
// 初始化桶
list[i] = new LinkedList();
}
for (int i = 0; i< arr.length; i++)
{
// 计算位置,将元素存入桶中
LinkedList<Integer> ll = list[((arr[i] * 10) / (max + 1))];
if (ll.size() <= 0) {
ll.add(arr[i]);
} else {
for (int j = 0; j < ll.size(); j++) {
if (ll.get(j) < arr[i]) {
ll.add(arr[i]);
break;
} else if (ll.get(j) >= arr[i]) {
ll.add(j,arr[i]);
break;
}
}
}
}
System.out.println(Arrays.toString(list));
for (int i = 0; i < list.length; i++)
{
if( list[i].size() > 0)
{
System.out.print(list[i]);
}
}
}
}
java 实现桶排序
最新推荐文章于 2024-08-05 13:37:28 发布