桶排序

本文详细介绍了一种基于桶的排序算法实现过程,通过将输入数组分解到有限数量的桶中,每个桶再进行单独排序,最后将所有桶中的元素按顺序合并,达到高效排序的目的。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

桶排序的实现: 

package L3;

import java.util.Arrays;
import java.util.Comparator;
import java.util.LinkedList;

//桶排序
public class L10 {

	static int Mathmax(int[] arr) {
		int max = arr[0];
		for (int i = 0; i < arr.length; i++) {
			if (max < arr[i])
				max = arr[i];
		}
		return max;
	}

	static int hash(int val, int max, int length) {
		return val * (length) / (max + 1);
	}

	static void insert(LinkedList<Integer> bucket, int val) {
		if (bucket.isEmpty()) {
			bucket.add(val);
		} else {
			bucket.add(val);
			bucket.sort(new Comparator<Integer>() {

				@Override
				public int compare(Integer o1, Integer o2) {
					// TODO Auto-generated method stub
					if (o1 < o2)
						return -1;
					else if (o1 > o2)
						return 1;
					else
						return 0;
				}
			});
		}
	}

	public static void main(String[] args) {
		// TODO Auto-generated method stub

		int[] arr = { 1, 5, 6, 8, 25, 96, 2, 5, 5, 3, 32 };
		int length = arr.length;
		LinkedList<Integer>[] bucket = new LinkedList[length];
		for (int i = 0; i < length; i++) {
			bucket[i] = new LinkedList<>();
		}
		int max = Mathmax(arr);
		for (int i = 0; i < length; i++) {
			int val = arr[i];
			int index = hash(val, max, length);
			insert(bucket[index], val);
		}
		int k = 0;
		for (LinkedList<Integer> List : bucket) {
			while (!List.isEmpty()) {
				arr[k++] = List.poll();
			}
		}
		System.out.println(Arrays.toString(arr));
	}

}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值