码迷,mamicode.com
首页 > 其他好文 > 详细

桶排序

时间:2014-05-01 22:19:46      阅读:342      评论:0      收藏:0      [点我收藏+]

标签:style   blog   class   code   java   javascript   color   int   2014   http   com   

mamicode.com,码迷
 1 //桶排序思想
 2 //假如要排序的是数字是 2 4 5 5 5 8 8 9 1 1
 3 #include<stdio.h>
 4 #define length 10
 5 int main()
 6 {
 7     //数组元素值全部初始化为0
 8     int array[length]={0};
 9     int i,j;
10     int n;
11     for(i=0;i<length;i++)
12     {
13         scanf("%d",&n);
14         array[n]++;
15     }
16     for (i = 0; i < length; i++)
17     {
18         for(j=0;j<array[i];j++)
19             printf("%d ",i);
20     }
21 
22     return 0;
23 }
mamicode.com,码迷

mamicode.com,码迷

假如上面是运动会某个时刻的金牌数,这样子无法区分到底是哪个国家。

并且排序满足:1.按照金牌数 2.按照输入顺序

我们可以设置一个二维数组,把每行数组看做一个队列,先输入的先进队,输出自然是遵循先进先出的原则。

mamicode.com,码迷
// Ba 2 Da 4 Ea 5 Eb 5 Ec 5 Ha 8 Hb 8 Ia 9 Aa 1 Ab 1
#include<stdio.h>
#define length 10

struct node
{
    char country[6];   //国家
    int count;             //金牌数
};
int main()
{
    int i,j,n;
    int array[10][10]={0};
    int index[10]={0};       //存储每行队列(数组)内元素个数
    struct node ary[length]={
        {"Ba",2},{"Da",4},{"Ea",5},{"Eb",5},
        {"Ec",5},{"Ha",8},{"Hb",8},{"Ia",9},
        {"Aa",1},{"Ab",1}};
    for(i=0;i<length;i++)
    {
        n=ary[i].count;            //桶子编号
        array[n][index[n]]=i;    //存储结构体数组索引
        index[n]++;
    }
    for(i=0;i<length;i++)
    {
        for(j=0;j<index[i];j++)
        {
            printf("%s %d\n",ary[array[i][j]].country,ary[array[i][j]].count);
        }
    }
}
mamicode.com,码迷

结果:

mamicode.com,码迷

如果感觉代码不好理解,看图:

mamicode.com,码迷

 

 

 

桶排序,码迷,mamicode.com

桶排序

标签:style   blog   class   code   java   javascript   color   int   2014   http   com   

原文地址:http://www.cnblogs.com/qiangua/p/3703058.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!