Advertisement
Guest User

Untitled

a guest
Jun 19th, 2018
65
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.20 KB | None | 0 0
  1. #include<stdio.h>
  2. #include<stdlib.h>
  3.  
  4. void zliczanie(int *A,int k);
  5. int maximum(int *A,int k);
  6. int minimum(int *A,int k);
  7. int main()
  8. {
  9. int *A,k,liczba,i=0;
  10. printf("podaj ilosc elementow \n");
  11. fflush(stdin);
  12. scanf("%d",&k);
  13. A=(int*)malloc(k*sizeof(int));
  14. printf("\n podaj elementy tablicy \n");
  15. while(i<k)
  16. {
  17. fflush(stdin);
  18. scanf("%d",&liczba);
  19. A[i]=liczba;
  20. i++;
  21. }
  22. zliczanie(A,k);
  23. printf("\n tablica posortowana: \n");
  24. i=0;
  25. while(i<k)
  26. {
  27. printf("%d, ",A[i]);
  28. i++;
  29. }
  30. printf("\n");
  31. }
  32.  
  33. int maximum(int *A,int k)
  34. {
  35. int i,max;
  36. max=A[0];
  37. for (i=1;i<k;i++)
  38. {
  39. if(A[i]>max) max=A[i];
  40. }
  41. return max;
  42. }
  43. int minimum(int *A,int k)
  44. {
  45. int i,min;
  46. min=A[0];
  47. for (i=1;i<k;i++)
  48. {
  49. if(A[i]<min) min=A[i];
  50. }
  51. return min;
  52. }
  53. void zliczanie(int *A,int k)
  54. {
  55. int i,min,max,ilosc,j;
  56. int *C,*B=(int*)malloc(k*sizeof(int));
  57. min=minimum(A,k);
  58. max=maximum(A,k);
  59. ilosc=max-min;
  60. C=(int*) calloc ((ilosc+1),sizeof(int));
  61. for(j=0;j<k;j++)
  62. C[A[j]]=C[A[j]]+1;
  63. for(i=1;i<=ilosc;i++)
  64. C[i]=C[i]+C[i-1];
  65. for(j=0;j<k;j++)
  66. {
  67. B[C[A[j]-min]-1]=A[j];
  68. C[A[j]-min]=C[A[j]-min]-1;
  69. }
  70. for(j=0;j<k;j++)
  71. {
  72. A[j]=B[j];
  73. }
  74. free(B);
  75. free(C);
  76. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement