Advertisement
Guest User

Untitled

a guest
Apr 24th, 2018
59
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.19 KB | None | 0 0
  1. #include <ctime>
  2. #include <iostream>
  3. #define MAX 50 //zmieniamy z zależności od wielkości tablicy
  4. #include <string>
  5. #include <cstdlib>
  6. #include <algorithm>
  7.  
  8. using namespace std;
  9.  
  10. void show(int *tab)
  11. {
  12. for(int i = 0; i < MAX; i++)
  13. {
  14. cout << tab[i] << "||";
  15. }
  16. }
  17.  
  18. void sort_reverse(int *tab)
  19. {
  20. sort(tab, tab + MAX, greater< int >()); // sortowanie malejące (na potrzeby testów)
  21. }
  22.  
  23. void sort_increase(int * tab)
  24. {
  25. sort(tab,tab + MAX); //sortowanie rosnące (na potrzeby testów)
  26. }
  27.  
  28. int main()
  29. {
  30. srand(time(NULL));
  31. int tab[MAX], flag;
  32.  
  33. for (int i = 0; i < MAX; i++)
  34. {
  35. tab[i] = rand() % (4*MAX-1)+ 0; //wypełniamy tablicę losowymi liczbami
  36. cout << tab[i] << " ";
  37.  
  38. if ((i + 1) % 5 == 0)
  39. {
  40. cout << endl;
  41. }
  42. }
  43. //sort_increase(tab); //funkcja sortujaca rosnaca, na potrzeby testow
  44. //sort_reverse(tab); //funkcjo sortuajca malejaco, na potrzeby testow
  45.  
  46.  
  47. //bool is_sorted = false; //sprawdzanie, czy tablica jest posortowana (nie jest)
  48. int z=0;
  49. int counter_swap = 0; //licznik przestawień
  50. int counter_if = 0; //licznik porównań
  51.  
  52. int k,temp,n;
  53. n = MAX;
  54.  
  55. for(int i=0; i<(n-1); i++)
  56. {
  57.  
  58. if(tab[i+1]<tab[i]) //Sprawdzamy czy element na nastepnej pozycji jest mniejszy od obencego.
  59. {
  60. counter_if++;
  61. k = i;
  62. while(tab[i+1]<tab[k]) //Wtedy zliczamy do poczatku ile jest mniejszych elementow
  63. { //Zmienna k to wskaznik odpowiedniego miejsca.
  64. k--;
  65. }
  66.  
  67. if(k==i){
  68. counter_if++;
  69. counter_swap++;
  70. swap(tab[i], tab[i+1]); //Jezeli element przesuwamy tylko o jedno miejsce,poprostu zamieniamy dwa sasiadujace.
  71. }
  72. else //W innym wypadku, kopiujemy element do tempa, przesuwamy
  73. { // wszytskie elementy w prawo, i wsadzamy go w odpowiednie miejsce.
  74. temp = tab[i+1];
  75.  
  76. for(int l=i+1; l>k; l--)
  77. {
  78. tab[l] = tab[l-1];
  79. counter_swap++;
  80. }
  81.  
  82. tab[k+1] = temp;
  83. }
  84.  
  85.  
  86. }
  87. //wyswietl(tab, 8);
  88. }
  89.  
  90. cout << "Zamiany: "<<counter_swap<< endl;
  91. cout << "Porownania: "<<counter_if << endl;
  92. show(tab);
  93.  
  94. return 0;
  95. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement