Advertisement
szmelu

sortowania2

May 25th, 2017
54
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.13 KB | None | 0 0
  1. void bubblesort( int tab[], int size )
  2. {
  3. for( int i = 0; i < size; i++ )
  4. {
  5. for( int j = 0; j < size - 1; j++ )
  6. {
  7. if( tab[ j ] > tab[ j + 1 ] )
  8. swap( tab[ j ], tab[ j + 1 ] );
  9.  
  10. }
  11. }
  12. }
  13. void insertion( int tab[], int size )
  14. {
  15. int temp, j;
  16.  
  17. for( int i = 1; i < size; i++ )
  18. {
  19. temp = tab[ i ];
  20.  
  21. for( j = i - 1; j >= 0 && tab[ j ] > temp; j-- )
  22. tab[ j + 1 ] = tab[ j ];
  23.  
  24. tab[ j + 1 ] = temp;
  25. }
  26. }
  27. //heapy
  28. void heapify (int *tab, int heap_size, int i)
  29. {
  30. int largest, temp;
  31. int l=2*i, r=(2*i)+1;
  32. if (l<=heap_size && tab[l]>tab[i])
  33. largest=l;
  34. else largest=i;
  35. if (r<=heap_size && tab[r]>tab[largest])
  36. largest=r;
  37. if (largest!=i)
  38. {
  39. temp=tab[largest];
  40. tab[largest]=tab[i];
  41. tab[i]=temp;
  42. heapify(tab,heap_size,largest);
  43. }
  44. }
  45. void budKopiec(int *tab, int rozmiar)
  46. {
  47. for (int i=rozmiar/2;i>0;i--)
  48. heapify(tab,rozmiar, i);
  49. }
  50.  
  51. void heapy(int *tab, int rozmiar)
  52. {
  53. int temp;
  54. budKopiec(tab, rozmiar);
  55. for (int i=rozmiar;i>1;i--)
  56. {
  57. temp=tab[i];
  58. tab[i]=tab[1];
  59. tab[1]=temp;
  60. rozmiar--;
  61. heapify(tab,rozmiar,1);
  62. }
  63. }
  64. void merge(int tab[],int t[], int pocz, int sr, int kon)
  65. {
  66. int i,j,q;
  67. for (i=pocz; i<=kon; i++) t[i]=tab[i];
  68. i=pocz; j=sr+1; q=pocz;
  69. while (i<=sr && j<=kon)
  70. {
  71. if (t[i]<t[j])
  72. tab[q++]=t[i++];
  73. else
  74. tab[q++]=t[j++];
  75. }
  76. while (i<=sr) tab[q++]=t[i++];
  77. }
  78.  
  79. void mergesort(int A[],int t[], int a, int b)
  80. {
  81. int c;
  82. if(a < b)
  83. {
  84. c=(a+b)/2;
  85. mergesort(A, t, a, c);
  86. mergesort(A, t, c+1, b);
  87. merge(A, t, a, c, b);
  88. }
  89. }
  90. void QuickSort(int a[],int start,int end) {
  91. int q=HoarePartition(a,start,end);
  92. if (end<=start) return;
  93. QuickSort(a,q+1,end);
  94. QuickSort(a,start,q);
  95. }
  96.  
  97. int HoarePartition (int a[],int p, int r) {
  98. int x=a[p],i=p-1,j=r;
  99. while (1) {
  100. do j--; while (a[j] > x);
  101. do i++; while (a[i] < x);
  102.  
  103. if (i < j)
  104. swap(&a[i],&a[j]);
  105. else
  106. return j;
  107. }
  108. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement