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,j,t;
  23. int b[MAX];
  24. int max=a[0];
  25. for(i=1;i<n;i++)
  26. {
  27. //最大値を出す
  28. if(max<a[i])
  29. max=a[i];
  30. }
  31. //b配列のmaxまでの中身を全部0にする
  32. for(i=0;i<=max;i++)
  33. {
  34. b[j]=0;
  35. }
  36. //b配列に1を代入
  37. for(i=0;i<n;i++)
  38. {
  39. b[a[i]]=1;
  40. }
  41. for(i=0;i<=max;i++)
  42. {
  43. if(b[i]==1)
  44. a[i]=b[i];
  45. }
  46. }
  47.  
  48. int main(void){
  49. int n,i;
  50. int *v;
  51. scanf("%d",&n);
  52. v = (int*)malloc(sizeof(int)*n);
  53. if(v==NULL){
  54. printf("ERROR\n");
  55. return -1;
  56. }
  57. for(i=0;i<n;i++){
  58. scanf("%d",&v[i]);
  59. }
  60. BucketSort(v,n);
  61. printA(v,n);
  62. free(v);
  63. return 0;
  64. }
Success #stdin #stdout 0s 5276KB
stdin
8
21 55 5 13 8 2 34 3
stdout
21 55 1 1 8 1 34 3