public class BucketSort {
public static void main(String args[]){
int[] data={
50,49,48,47,46,45,44,43,42,41,
40,39,38,37,36,35,34,33,32,31,
30,29,28,27,26,25,24,23,22,21,
20,19,18,17,16,15,14,13,12,11,
10,9,8,7,6,5,4,3,2,1
};
// reverse(data);
bucketSort(data);
print(data);
}
private static void reverse(int[] data){
int temp;
for(int i=0;i<data.length/2-1;i++){
temp=data[i];
data[i]=data[data.length-1-i];
data[data.length-1-i]=temp;
}
}
private static void print(int[] data) {
System.out.println("最终结果");
for(int i=0;i<data.length;i++){
if(i%10==0)System.out.println();
System.out.print(data[i]+" ");
if(data[i]<10)System.out.print(" ");
}
}
public static void bucketSort(int[] A){
Int[] B=new Int[6];//6个桶
for(int i=0;i<A.length;i++){
Int temp=new Int();
temp.data=A[i];
temp.next=null;
if(B[A[i]/10]==null){
B[A[i]/10]=temp;
}
else{
temp.next=B[A[i]/10];
B[A[i]/10]=temp;
}
}
/*for(int i=0;i<B.length;i++){
Int t=B[i];
while(t!=null){
System.out.print(t.data+" ");
t=t.next;
}
System.out.println();
}*/
for(int i=0;i<B.length;i++){
B[i]=quickSort(B[i]);
}
int count=0;
for(int i=0;i<B.length;i++){
Int temp=B[i];
while(temp!=null){
A[count]=temp.data;
// A[count]=1;
count++;
temp=temp.next;
}
}
}
private static Int quickSort(Int int1) {
int count=0;
int[] temp=new int[1000];
while(int1!=null){
temp[count]=int1.data;
count++;
int1=int1.next;
}
int[] result=new int[count];
for(int i=0;i<count;i++){
result[i]=temp[i];
}
quick(result,0,result.length-1);
int1=null;
for(int i=0;i<result.length;i++){
Int tem=new Int();
tem.data=result[i];
tem.next=null;
if(i==0){
int1=tem;
}
else{
tem.next=int1;
int1=tem;
}
}
return int1;
}
private static void quick(int[] result, int p, int r) {
int q;
if(p<r){
q=partion(result,p,r);
quick(result,p,q-1);
quick(result,q+1,r);
}
}
private static int partion(int[] result, int p, int r) {
int x=result[r];
int i=p-1;
int temp;
for(int j=p;j<r;j++){
if(result[j]>=x){
i++;
temp=result[j];
result[j]=result[i];
result[i]=temp;
}
}
i++;
temp=result[i];
result[i]=result[r];
result[r]=temp;
return i;
}
}
class Int{
public int data;
public Int next;
}
算法导论-BucketSort桶排序Java实现
最新推荐文章于 2025-06-30 21:35:42 发布