Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include<stdio.h>
- #include<stdlib.h>
- void zliczanie(int *A,int k);
- int maximum(int *A,int k);
- int minimum(int *A,int k);
- int main()
- {
- int *A,k,liczba,i=0;
- printf("podaj ilosc elementow \n");
- fflush(stdin);
- scanf("%d",&k);
- A=(int*)malloc(k*sizeof(int));
- printf("\n podaj elementy tablicy \n");
- while(i<k)
- {
- fflush(stdin);
- scanf("%d",&liczba);
- A[i]=liczba;
- i++;
- }
- zliczanie(A,k);
- printf("\n tablica posortowana: \n");
- i=0;
- while(i<k)
- {
- printf("%d, ",A[i]);
- i++;
- }
- printf("\n");
- }
- int maximum(int *A,int k)
- {
- int i,max;
- max=A[0];
- for (i=1;i<k;i++)
- {
- if(A[i]>max) max=A[i];
- }
- return max;
- }
- int minimum(int *A,int k)
- {
- int i,min;
- min=A[0];
- for (i=1;i<k;i++)
- {
- if(A[i]<min) min=A[i];
- }
- return min;
- }
- void zliczanie(int *A,int k)
- {
- int i,min,max,ilosc,j;
- int *C,*B=(int*)malloc(k*sizeof(int));
- min=minimum(A,k);
- max=maximum(A,k);
- ilosc=max-min;
- C=(int*) calloc ((ilosc+1),sizeof(int));
- for(j=0;j<k;j++)
- C[A[j]]=C[A[j]]+1;
- for(i=1;i<=ilosc;i++)
- C[i]=C[i]+C[i-1];
- for(j=0;j<k;j++)
- {
- B[C[A[j]-min]-1]=A[j];
- C[A[j]-min]=C[A[j]-min]-1;
- }
- for(j=0;j<k;j++)
- {
- A[j]=B[j];
- }
- free(B);
- free(C);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement