一文秒懂桶排序

桶排序。
原理:把一个区间的数据放在一个桶里,另一个区间的数据放在另一个桶里,放完数据之后把每一个桶里的数据进行排序就完成了核心过程。区间的大小由自己设定(这个设定简单)。桶的数量的话就是(总区间)/(每个桶区间大小)+1。

给个图加深点印象。
一文秒懂桶排序_第1张图片

public class BucketSort{
	public static int[] bucketSort(int[] arr) {
		if(arr==null||arr.length<2) return arr;
		int n = arr.length;
		int min = arr[0];
		int max = arr[0];
		for(int i=1;iarr[i]) min = arr[i];
		}
		int d = max - min;          //d代表总区间的大小
		int bucketNum = d/5+1;      //桶的数目 区间大小设为5(这个看个人喜欢,即应用场景)。
		ArrayList> bucketList = new ArrayList<>(bucketNum);//建立桶数组
		for(int i =  0;i list:bucketList) {
			for(Integer element:list) {
				arr[index++] = element;
			}
		}
		return arr;
	}
	//测试用例
	public static void main(String[] args) {
		int [] a = {4,6,5,2,9,1,8};
		BucketSort r1 = new BucketSort();
		a = r1.bucketSort(a);
		for(int j=0;j

如果有收获的话,关注我的微信公众号“玩编程地码农”,目前专注写数据结构与算法相关知识。

你可能感兴趣的:(一文秒懂桶排序)