排序_最快最简单的排序——桶排序

  • 期末考试完老师要将同学们的分数从高到低排序。班上只有5名同学,分别考了5、3、5、2、8分(满分是十分)。如何让计算机随机读入5个数然后将这5个数从大到小输出?
    题目解析
    把输入的分数当作数字下标计数
#include<stdio.h>
#include<iostream>
using namespace std;
int main()
{
	int score;
	int cnt[11]={0};
	for(int i=0;i<5;i++)
	{
		cin>>score;
		cnt[score]++;
	}
	for(int i=10;i>=0;i--)
	{
		for(int j=0;j<cnt[i];j++)
		   	cout<<i<<" ";
	}
	return 0;
 } 
  • 输入n个0~1000之间的整数,从大到小排序

输入

10
8 100 50 22 15 6 1 1000 999 0

输出

1000 999 100 50 22 15 8 6 1 0

#include<stdio.h>
#include<iostream>
using namespace std;
int main()
{
	int a,n;//n=输入几个数字  
	int cnt[1001]={0};
	cin>>n;
	for(int i=0;i<n;i++)
		{
			cin>>a;
			cnt[a]++;
		}
	for(int i=1000;i>=0;i--)
  		for(int j=0;j<cnt[i];j++)
  		{
  			cout<<i<<" ";
		}
	return 0;
}

缺点

  • 浪费空间,若要排序在0~21000000000000,则需申请21000000000000个变量,写成a[21000000000000],我的天,
  • 小数不能用此方法比较大小
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值