第一个算法----“假的”桶排序

坚持写算法第一天,先来一个桶排序,为什么叫“假的”桶排序,因为它是一个简化版的,真正的桶排序比这个复杂的多,第一天写算法,先来个简单点的(偷懒)!

我们假设输入五个数,这五个数的范围在0到10,然后按从大到小的顺序输出!简单粗暴,直接上代码吧!

#include<stdio.h> 
int main(){
	int a[11],i,j,t;//假设我们要比较的数范围在0 —10,所以就定义了一个大小为11的数组 
	for(i=0;i<=10;i++)
	     a[i]=0;//初始化为0 
     
    for(i=1;i<=5;i++){//循环输入5个数 
    	scanf("%d",&t);//把输入的每个数读到变量t中 
    	a[t]++;//进行计数 
	}
	
	for(i=10;i>=0;i--)//依次判断a[10]-a[0] 
	   for(j=1;j<=a[i];j++)//出现几次就打印几次 
	      printf("%d",i);
    
	system("pause");//暂停程序,查看输出的内容 
	return 0; 
}

简单解释一下,我们可以把它看成有11个桶,每个桶里面装有沙子,给每个桶从0–10进行编号。每当我们输入一个0–10之间的数,就在对应编号的桶上插上一面旗子,对应的桶编号出现几次就有几面旗子。比如输入一个5,就在5号桶上插上一面旗子,有几面旗子就表示出现了几次,比如10号桶上有2面旗子,表示10出现了两次。原理还是很简单的,因为它是“假的”,真正的桶排序比这个肯定要难!

计划是每天写一道算法题,但是也要结合自己的实际情况,毕竟这和智商还是有点关系的,碰上难的算法题,自己应该会啃好几天,不管时间多久,都要坚持学习,很喜欢这个过程,过程让自己成长。以后也会常分享,可能有些写的不太好,欢迎各位赐教。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值