Advertisement
Guest User

Untitled

a guest
Jun 25th, 2018
72
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.97 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4.  
  5. int max_tab(int *tab,int n);
  6. int min_tab(int *tab,int n);
  7. int *sort_zliczanie(int *tab, int n);
  8. int *sort_wstaw(int *tab, int n);
  9.  
  10. main()
  11. {
  12. int a,b,c;
  13. int *tab;
  14. int i, n;
  15. char znak;
  16.  
  17. printf("Ilosc elementow do sortowania: ");
  18. scanf("%d",&n);
  19.  
  20. tab=(int *)calloc(n,sizeof(int));
  21.  
  22. for(i = 0; i < n; i++)
  23. {
  24. printf("Element numer %d: ", i);
  25. scanf("%d", (tab+i));
  26. }
  27. printf("\n");
  28. while(1)
  29. {
  30. printf("Co chcesz zrobic?\n");
  31. printf("Sortowanie przez zliczanie: z\n");
  32. printf("Sortowanie przez wstawianie: w\n");
  33. printf("Wyjscie - q\n");
  34. fflush(stdin);
  35. znak=getchar();
  36. switch(znak)
  37. {
  38. case 'z':
  39. tab= sort_zliczanie(tab, n);
  40. for(i=0; i<n; i++)
  41. {
  42. printf(" %d \t",*(tab+i));
  43. }
  44. printf("\n");
  45. break;
  46. case 'w':
  47. tab= sort_wstaw(tab, n);
  48. for(i=0; i<n; i++)
  49. {
  50. printf(" %d \t",*(tab+i));
  51. }
  52. printf("\n");
  53. break;
  54. case 'q':
  55. return 0;
  56. default:
  57. printf("\nBlad wyboru");
  58. break;
  59. }
  60. }
  61. }
  62. int max_tab(int *tab,int n)
  63. {
  64. int i, max;
  65. max = *tab;
  66. for(i = 0; i< n; i++)
  67. {
  68. if(max < *(tab+i))
  69. max = *(tab+i);
  70. }
  71.  
  72. return max;
  73. }
  74. int min_tab(int *tab,int n)
  75. {
  76. int i, min;
  77. min = *tab;
  78. for(i = 0; i< n; i++)
  79. {
  80. if(min > *(tab+i))
  81. min = *(tab+i);
  82. }
  83.  
  84. return min;
  85. }
  86. int *sort_zliczanie(int *tab, int n)
  87. {
  88. int i,j, max, min;
  89. int *c;
  90. int *wynik;
  91.  
  92. max = max_tab(tab,n);
  93. min = min_tab(tab,n);
  94. c = (int *)calloc(max-min+1, sizeof(int));
  95. wynik = (int *) calloc(n, sizeof(int));
  96.  
  97. for( i = 0; i < n; i++)
  98. (*(c +*(tab+i) - min ))++;
  99. for( i = 1; i < (max-min)+1; i++)
  100. *(c+i) = *(c+i) + *(c+i -1);
  101. for( i = 0; i < n; i++)
  102. {
  103. *(wynik + *(c+*(tab+i ) -min) -1 )= *(tab+i);
  104. (*(c +*(tab+i) - min))--;
  105. }
  106. return wynik;
  107. }
  108. int *sort_wstaw(int *tab, int n)
  109. {
  110. int j,k,i=0;
  111.  
  112. for(j=1;j<n;j++)
  113. {
  114. k=*(tab+j);
  115.  
  116. i=j-1;
  117. }
  118. while(i>0 && *(tab+i)>k)
  119. {
  120. *(tab+i+1)=*(tab+i);
  121. i--;
  122. }
  123. *(tab+i+1)=k;
  124. return tab;
  125. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement