zoukankan      html  css  js  c++  java
  • 桶排序

     1 #include<stdio.h>
     2 #include<string.h>
     3 
     4 int a[10010],w[10010],p[10010],o[10010];
     5 
     6 void Barrel_Sort( int *a , int n ,int mx )
     7 {
     8     int i ;
     9     memset ( w , 0 , sizeof(w) ) ;
    10     for ( i = 1 ; i <= n ; i++ )
    11         w[ a[i] ]++;
    12     for ( i = 1 ; i <= mx ; i++ )
    13         w[i] = w[i] + w[i-1] ;
    14     for ( i = 1 ; i <= n ; i++ ) {
    15         p[i] = w[a[i]] ;
    16         w[a[i]]--;
    17     }
    18     for( i = 1 ; i <= n ; i++ )
    19         o[p[i]] = i;
    20 }
    21 
    22 int main()
    23 {
    24     int n,i,mx;
    25     while ( scanf("%d" , &n) != EOF ) {
    26 
    27     mx = 0;
    28     for( i = 1 ; i <= n ; i++ )
    29     {
    30         scanf ("%d" , &a[i] );
    31         if ( a[i] > mx )
    32             mx = a[i];
    33     }
    34     Barrel_Sort( a , n , mx );
    35     for ( i = 1 ; i <= n ; i++ )
    36     {
    37         printf ("%d " , a[o[i]] );
    38     }
    39     printf ("
    ");
    40     
    41     }
    42     return 0;
    43 }
    44     
    桶排序

    桶排序为复杂度为O(n + k),其中k为所排数的最大值 。 

  • 相关阅读:
    make menuconfig出现乱码
    内存中的变量和值
    is&==
    python小整数池
    生成器
    GIL
    grub rescue问题修复
    期末考试
    期末要求
    选课练习
  • 原文地址:https://www.cnblogs.com/get-an-AC-everyday/p/4267320.html
Copyright © 2011-2022 走看看