最快最简单的排序-----桶排序1

算法介绍:

桶排序是一个平常快的排序算法。该算法的基本思想是由E.J.Issac和R.C.Singleton提出来的。但是在本篇文章中并不是完整的桶排序,完整的我还没学(狗头)。

算法基本思想:

桶排序顾名思义就是需要用类似“桶”的“容器”来帮忙排序。首先我们根据要求定义数组,例如要将1000以内的数进行排序,那我们就定义一个book[1001](此处book有标记的意识每一个“桶”的作用其实就是“标记”)。接着通过循环将book初始化为0。在输入要排列的数,将数读到T,且每读一个T将book[T]加一。输出部分依次判断book[0]~book[1000],若大于0,则需要打印,数为几就打印几次。

代码如下:

#include<stdio.h>
   
int main()
{
	int n ;
	scanf("%d" , &n);			//输入一个数n,表示接下来有n个数
	
	int m ;
	int book[1001];
	for( m = 0 ; m <= 1000 ; m ++){//初始化为0
		book[m] = 0 ;
	}
	
	int T ;
	for( m = 0 ; m < n ; m ++){		//循环读入每一个数,并进行桶排序
		scanf("%d" ,&T);			//把每一个数读到变量T
		book[T] ++;					//进行计数,对编号为T的桶进行标记
	}
	
	for( m = 0 ; m <= 1000 ; m ++ ){//依次判断编号0~1000的桶
		if(book[m] != 0){			
			for( ; book[m] != 0 ; book[m] -- ){//出现几次就将桶的编号打印几次
				printf("%d " , m);
			}
		}
	}
	
	return 0;
}

结果如下:

补充:

之前说过本文章的桶排序不完整。举个例子:将班上的人成绩与名字进行桶排序,如果进行刚刚简化版的桶排序算法仅仅是把成绩排序,但没有对人本身进行排序。所以完成不了问题。让我们继续学习,补充完整桶排序吧。

 

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

kukudeYSB

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值