Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <stdlib.h>
- int max_tab(int *tab,int n);
- int min_tab(int *tab,int n);
- int *sort_zliczanie(int *tab, int n);
- int *sort_wstaw(int *tab, int n);
- main()
- {
- int a,b,c;
- int *tab;
- int i, n;
- char znak;
- printf("Ilosc elementow do sortowania: ");
- scanf("%d",&n);
- tab=(int *)calloc(n,sizeof(int));
- for(i = 0; i < n; i++)
- {
- printf("Element numer %d: ", i);
- scanf("%d", (tab+i));
- }
- printf("\n");
- while(1)
- {
- printf("Co chcesz zrobic?\n");
- printf("Sortowanie przez zliczanie: z\n");
- printf("Sortowanie przez wstawianie: w\n");
- printf("Wyjscie - q\n");
- fflush(stdin);
- znak=getchar();
- switch(znak)
- {
- case 'z':
- tab= sort_zliczanie(tab, n);
- for(i=0; i<n; i++)
- {
- printf(" %d \t",*(tab+i));
- }
- printf("\n");
- break;
- case 'w':
- tab= sort_wstaw(tab, n);
- for(i=0; i<n; i++)
- {
- printf(" %d \t",*(tab+i));
- }
- printf("\n");
- break;
- case 'q':
- return 0;
- default:
- printf("\nBlad wyboru");
- break;
- }
- }
- }
- int max_tab(int *tab,int n)
- {
- int i, max;
- max = *tab;
- for(i = 0; i< n; i++)
- {
- if(max < *(tab+i))
- max = *(tab+i);
- }
- return max;
- }
- int min_tab(int *tab,int n)
- {
- int i, min;
- min = *tab;
- for(i = 0; i< n; i++)
- {
- if(min > *(tab+i))
- min = *(tab+i);
- }
- return min;
- }
- int *sort_zliczanie(int *tab, int n)
- {
- int i,j, max, min;
- int *c;
- int *wynik;
- max = max_tab(tab,n);
- min = min_tab(tab,n);
- c = (int *)calloc(max-min+1, sizeof(int));
- wynik = (int *) calloc(n, sizeof(int));
- for( i = 0; i < n; i++)
- (*(c +*(tab+i) - min ))++;
- for( i = 1; i < (max-min)+1; i++)
- *(c+i) = *(c+i) + *(c+i -1);
- for( i = 0; i < n; i++)
- {
- *(wynik + *(c+*(tab+i ) -min) -1 )= *(tab+i);
- (*(c +*(tab+i) - min))--;
- }
- return wynik;
- }
- int *sort_wstaw(int *tab, int n)
- {
- int j,k,i=0;
- for(j=1;j<n;j++)
- {
- k=*(tab+j);
- i=j-1;
- }
- while(i>0 && *(tab+i)>k)
- {
- *(tab+i+1)=*(tab+i);
- i--;
- }
- *(tab+i+1)=k;
- return tab;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement