Advertisement
Paszta

Taco - sortowanie

Mar 24th, 2019
61
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 4.02 KB | None | 0 0
  1. #include <iostream>
  2. #include <cstdlib>
  3.  
  4. using namespace std;
  5.  
  6. bool generate_array_of_random_numbers(int* &arr, int n, int a, int b);
  7. void show_array(int* arr, int n);
  8. bool check_if_nondescending(int *arr, int n);
  9. int find_max_el(int *arr, int n);
  10. int find_min_el(int *arr, int n);
  11. void selectionsort(int *arr, int n);
  12. void revselectionsort(int *arr, int n);
  13. void bublesort(int *arr, int n);
  14. void revbublesort(int *arr, int n);
  15. void insertionsort(int *arr, int n);
  16. void revinsertionsort(int *arr, int n);
  17.  
  18.  
  19. int main()
  20. {
  21.     int n, a, b, opcja;
  22.     int *arr=nullptr;
  23.     cout << "podaj rozmiar tablicy" << endl;
  24.     cin >> n;
  25.     cout << "podaj poczatek przedzialu" << endl;
  26.     cin >> a;
  27.     cout << "podaj koniec przedzialu" << endl;
  28.     cin >> b;
  29.    cout << "" << endl;
  30.     if(generate_array_of_random_numbers( arr, n, a, b)==1) {
  31.             show_array(arr, n);
  32.             cout << "" << endl;}
  33.     else {
  34.         cout << " niepoprawna tablica " << endl;}
  35.  
  36.     if(check_if_nondescending(arr, n) == 1){
  37.         cout << "Tablica jest niemalejaca" << endl;
  38.     }
  39.     else{
  40.         cout <<"Elementy tablicy nie sa w kolejnosci niemalejacej" << endl;
  41.     }
  42.  
  43.  
  44.     cout << "najwiekszy indeks: " << find_max_el(arr, n) << endl;
  45.     cout << "najmniejszy indeks: " << find_min_el(arr, n) << endl;
  46.  
  47.     cout << "Wybierz opcje:" << endl << "1 - sortowanie rosnace" << endl << "2 - sortowanie malejace" << endl;
  48.     cin >> opcja;
  49.  
  50.     if(opcja==1){
  51.     cout<< ""<< endl;
  52.     selectionsort(arr, n);
  53.     show_array(arr, n);
  54.     cout << "" << endl;
  55.     bublesort(arr, n);
  56.     show_array(arr, n);
  57.     cout << "" << endl;
  58.     insertionsort(arr, n);
  59.     show_array(arr, n);
  60.     cout << "" << endl;}
  61.  
  62.     if(opcja==2){
  63.     revselectionsort(arr, n);
  64.     show_array(arr, n);
  65.     cout << "" << endl;
  66.     revbublesort(arr, n);
  67.     show_array(arr, n);
  68.     cout << "" << endl;
  69.     revinsertionsort(arr, n);
  70.     show_array(arr, n);}
  71.  
  72.     delete [] arr;
  73.     return 0;}
  74.  
  75.  
  76. bool generate_array_of_random_numbers(int* &arr, int n, int a, int b){
  77. if(arr == nullptr){
  78.     arr = new int[n];
  79. int diff = b-a+1;
  80. for( int i = 0; i<n; i++)
  81.     arr[i]=a+rand()%diff;
  82. return true;}
  83.     else{
  84. return false;
  85.     }
  86. }
  87.  
  88. void show_array(int* arr, int n){
  89. for(int i=0; i<n; i++)
  90.     cout << arr[i] << " ";
  91. }
  92.  
  93. bool check_if_nondescending(int *arr, int n){
  94. if(arr == nullptr and n == 0)
  95.     return true;
  96. for(int i=0; i<n; i++)
  97.     if(arr[i]>arr[i+1])
  98.     return false;
  99. return true;
  100. }
  101.  
  102. int find_max_el(int *arr, int n){
  103. //if(arr == nullptr or n == 0)
  104.     //return -1;
  105. int maxel = arr[0];
  106. int imax = 0;
  107. for (int i =0; i<n; i++)
  108. if(arr[i] > maxel){
  109.     maxel= arr[i];
  110.     imax = i;
  111. }
  112. return imax;
  113. }
  114.  
  115. int find_min_el(int *arr, int n){
  116. //if(arr == nullptr or n == 0)
  117.     //return -1;
  118. int minel = arr[0];
  119. int imin = 0;
  120. for (int i =0; i<n; i++)
  121. if(arr[i] < minel){
  122.     minel= arr[i];
  123.     imin = i;
  124. }
  125. return imin;
  126. }
  127.  
  128. void selectionsort(int *arr, int n){
  129. int max_in;
  130. for(int i = n; i>1; i--){
  131.     max_in=find_max_el(arr, i);
  132.     swap(arr[i-1], arr[max_in]);
  133.     }
  134. }
  135.  
  136. void revselectionsort(int *arr, int n){
  137. int min_in;
  138. for(int i = n; i>1; i--){
  139.     min_in=find_min_el(arr, i);
  140.     swap(arr[i-1], arr[min_in]);
  141.     }
  142. }
  143.  
  144. void bublesort(int *arr, int n){
  145. for(int i = n-1; i>0; i-- ){
  146.     for( int j = 0; j<i; j++){
  147.         if(arr[j]>arr[j+1])
  148.         swap(arr[j], arr[j+1]);}
  149.         }
  150. }
  151.  
  152. void revbublesort(int *arr, int n){
  153. for(int i = n-1; i>0; i-- ){
  154.     for( int j = 0; j<i; j++){
  155.         if(arr[j]<arr[j+1])
  156.         swap(arr[j], arr[j+1]);}
  157.         }
  158. }
  159.  
  160. void insertionsort(int *arr, int n){
  161. int temp, j;
  162. for(int i=n-2; i>=0; i--){
  163.     j = i;
  164.     temp = arr[j];
  165.     while(temp > arr[j+1] and j < n-1){
  166.         arr[j] = arr[j+1];
  167.         j++;
  168.     }
  169.     arr[j] = temp;}
  170. }
  171.  
  172. void revinsertionsort(int *arr, int n){
  173. int temp, j;
  174. for(int i=n-2; i>=0; i--){
  175.     j = i;
  176.     temp = arr[j];
  177.     while(temp < arr[j+1] and j < n-1){
  178.         arr[j] = arr[j+1];
  179.         j++;
  180.     }
  181.     arr[j] = temp;}
  182. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement