fork download
  1. // BucketSort
  2. #include <stdio.h>
  3. #include <stdlib.h>
  4.  
  5. void printA(int a[], int n){
  6. int i;
  7. for(i=0;i<n;i++){
  8. printf("%d ",a[i]);
  9. }
  10. printf("\n");
  11. }
  12.  
  13. void swap(int* a, int* b){
  14. int tmp;
  15. tmp = *a;
  16. *a = *b;
  17. *b = tmp;
  18. }
  19.  
  20. #define MAX 1000000
  21. void BucketSort(int a[], int n){
  22. int i,t;
  23. int b[MAX]={0};
  24.  
  25. for(i = 0; i < n; i++){
  26. b[a[i]]++;
  27. }
  28.  
  29. t = 0;
  30. for(i = 0; i < MAX; i++){
  31. while(b[i] > 0){
  32. a[t++] = i;
  33. b[i]--;
  34. }
  35. }
  36. }
  37.  
  38.  
  39. int main(void){
  40. int n,i;
  41. int *v;
  42. scanf("%d",&n);
  43. v = (int*)malloc(sizeof(int)*n);
  44. if(v==NULL){
  45. printf("ERROR\n");
  46. return -1;
  47. }
  48. for(i=0;i<n;i++){
  49. scanf("%d",&v[i]);
  50. }
  51. BucketSort(v,n);
  52. printA(v,n);
  53. free(v);
  54. return 0;
  55. }
  56.  
Success #stdin #stdout 0.01s 5508KB
stdin
108
86	14	64	14	46	76	30	23	45	38	66	16	46	29	16	66	85	96	35	49	37	25	1	51	73	6	72	87	82	31	94	9	73	32	80	7	23	33	47	29	98	54	32	22	76	12	42	92	16	18	73	37	3	6	63	34	29	59	57	51	83	73	67	15	67	65	6	1	56	97	82	46	10	99	22	74	3	53	32	36	13	15	87	22	76	95	45	43	76	79	48	41	58	17	89	83	18	33	8	41	37	59	13	96	25	84	36	85
stdout
1 1 3 3 6 6 6 7 8 9 10 12 13 13 14 14 15 15 16 16 16 17 18 18 22 22 22 23 23 25 25 29 29 29 30 31 32 32 32 33 33 34 35 36 36 37 37 37 38 41 41 42 43 45 45 46 46 46 47 48 49 51 51 53 54 56 57 58 59 59 63 64 65 66 66 67 67 72 73 73 73 73 74 76 76 76 76 79 80 82 82 83 83 84 85 85 86 87 87 89 92 94 95 96 96 97 98 99