Advertisement
Guest User

Untitled

a guest
Mar 24th, 2018
90
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.45 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. void Merge(int *tab, int * tmp, int a , int b) {
  4. int i,j,k,sr;
  5. sr = (a+b)/2;
  6.  
  7. for(i = a ; i <= b; i++) tmp[i] = tab[i];
  8.  
  9. i = k = a;
  10. j = sr;
  11.  
  12. while(i <= sr && j <= b) {
  13. if(tmp[i] < tmp[j]) {
  14. tab[k++] = tmp[i++];
  15. } else {
  16. tab[k++] = tmp[j++];
  17. }
  18. }
  19. while(i <= sr) {
  20. tab[k++] = tmp[i++];
  21. }
  22. }
  23.  
  24. void DivideMerge(int * tab, int * tmp, int a, int b) {
  25. int sr = (a+b)/2;
  26. if(a < b) {
  27. DivideMerge(tab, tmp, a, sr);
  28. DivideMerge(tab, tmp, sr+1, b);
  29. Merge(tab, tmp ,a ,b );
  30. }
  31. }
  32.  
  33. void MergeSort(int * t, int n) {
  34. int * tmp = (int*) malloc ( sizeof(int) * n);
  35. DivideMerge(t, tmp, 0, n-1);
  36. free(tmp);
  37. }
  38.  
  39. void Wypisz(int * t, int n) {
  40. int i;
  41. for( i = 0 ; i < n ; i++) {
  42. printf("%d ", t[i]);
  43. }
  44. printf("\n");
  45. }
  46.  
  47.  
  48. void Quick(int * t, int a, int b) {
  49. int i, j, x, tmp;
  50. i = a;
  51. j = b;
  52. // int losowa = rand() % (b-a+1) + a;
  53. x = t[b];
  54. do {
  55. while(t[i] < x)
  56. i++;
  57. while(t[j] > x)
  58. j--;
  59.  
  60. if(i <= j) {
  61. tmp = t[i];
  62. t[i] = t[j];
  63. t[j] = tmp;
  64.  
  65. i++;
  66. j--;
  67. }
  68. }while(i <= j);
  69. if(a < j) Quick(t, a, j);
  70. if(b > i) Quick(t, i, b);
  71. }
  72.  
  73. void QuickSort(int * t, int n) {
  74. Quick(t, 0, n-1);
  75. }
  76.  
  77. int main(int argc, char *argv[]) {
  78. int n = 20, i;
  79. int * tab = (int*) malloc(sizeof(int) * n);
  80. for(i = 0 ; i < n; i++ ) tab[i] = rand()%100;
  81. Wypisz(tab, n);
  82. QuickSort(tab,n);
  83. Wypisz(tab, n);
  84.  
  85. free(tab);
  86. return 0;
  87. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement