排序(桶排序)

在这里插入图片描述

所谓桶排序也称基数排序,按位上数字的大小(例如个位数来分桶),桶内进行排序

在这里插入图片描述

int[] a = {23,5,32,4,23,256,867,45,3,54,54,766};

public void radixSort(){
	int max = 0;
	//找到最大的数
	for(int i=0;i<a.length;i++){
		if(max<a[i]){
			max=a[i];
		}
	}
	//根据最大的数判断位数
	int times = 0;
	while(max >0){
		max=max/10;
		times++
	}
	//建立十个队列
	List<ArrayList> queues = new ArrayList<>();
	for(int i=0;i<10;i++){
		ArrayList queue= new ArrayList();
		queues.add(queue);
	}
	//进行times次分配与收集
	for(int i=0;i<times;i++){
		//分配
		for(int j=0;j<a.length;j++){
			int x=a[j] %(int)Math.pow(10,i+1) / (int)Math.pow(10,i);
			ArrayList queueShare = queues.get(x);
			queueShare.add(a[j]);
			queues.set(x,queueShare);			
		}
		//收集
		int count = 0;
		for(int j=0;j<10;j++){
			while(queues.get(j).size()>0){
				ArrayList<Integer> queueSummary=queues.get(j);
				a[count] = queueSummary.get(0);
				queueSummary.remove(0);
				count++;
			}
		}
	}
	
}

已经接近尾声了,附上复杂度,并时常复习

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值