Advertisement
Guest User

Untitled

a guest
Apr 24th, 2018
65
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.07 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.  
  54. for(int i=0; i<(n-1); i++)
  55. {
  56. counter_if++;
  57. if(tab[i+1]<tab[i]) //Sprawdzamy czy element na nastepnej pozycji jest mniejszy od obencego.
  58. {
  59.  
  60. k = i;
  61. while(tab[i+1]<tab[k]) //Wtedy zliczamy do poczatku ile jest mniejszych elementow
  62. { //Zmienna k to wskaznik odpowiedniego miejsca.
  63. k--;
  64. }
  65.  
  66. if(k==i){
  67. swap(tab[i], tab[i+1]); //Jezeli element przesuwamy tylko o jedno miejsce,
  68. //poprostu zamieniamy dwa sasiadujace.
  69. counter_swap++;
  70. }
  71. else //W innym wypadku, kopiujemy element do tempa, przesuwamy
  72. { // wszytskie elementy w prawo, i wsadzamy go w odpowiednie miejsce.
  73. temp = tab[i+1];
  74.  
  75. for(int l=i+1; l>k; l--)
  76. {
  77. tab[l] = tab[l-1];
  78. }
  79.  
  80. tab[k+1] = temp;
  81. }
  82.  
  83.  
  84. }
  85. //wyswietl(tab, 8);
  86. }
  87.  
  88. cout << "Zamiany: "<<counter_swap<< endl;
  89. cout << "Porownania: "<<counter_if << endl;
  90. show(tab);
  91.  
  92. return 0;
  93. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement