Petro_zzz

new_lesson8

Sep 2nd, 2022
207
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 3.62 KB | None | 0 0
  1. #include <iostream>
  2.  
  3. using namespace std;
  4.  
  5. void genArr(int sz, int arr[]) {
  6.     for (int k = 0; k < sz; k++) {
  7.         arr[k] = rand() % 10000000;
  8.     }
  9. }
  10.  
  11. void showArr(int sz, int arr[]) {
  12.     for (int k = 0; k < sz; k++)
  13.         cout << arr[k] << " ";
  14.     cout << endl;
  15. }
  16.  
  17. void selectSort(long sz, int arr[], bool isBiger /* = true*/) {
  18.     long i, j, k;
  19.     int tmp;
  20.     if (isBiger) {
  21.         // перебор по текущим значениям
  22.         for (i = 0; i < sz; i++) {
  23.             k = i;
  24.             tmp = arr[i];
  25.             // поиск минимума
  26.             for (j = i + 1; j < sz; j++) {
  27.                 if (arr[j] > tmp) {
  28.                     k = j;
  29.                     tmp = arr[j];
  30.                 }
  31.             }
  32.             // обмен текущего значения с минимальным
  33.             if (k != i) {
  34.                 arr[k] = arr[i];
  35.                 arr[i] = tmp;
  36.             }
  37.         }
  38.     }
  39.     else {
  40.         // перебор по текущим значениям
  41.         for (i = 0; i < sz; i++) {
  42.             k = i;
  43.             tmp = arr[i];
  44.             // поиск минимума
  45.             for (j = i + 1; j < sz; j++) {
  46.                 if (arr[j] < tmp) {
  47.                     k = j;
  48.                     tmp = arr[j];
  49.                 }
  50.             }
  51.             // обмен текущего значения с минимальным
  52.             if (k != i) {
  53.                 arr[k] = arr[i];
  54.                 arr[i] = tmp;
  55.             }
  56.         }
  57.     }
  58. }
  59.  
  60. int Fibonachi(int n) {
  61.     if (n <= 0)
  62.         return 0;
  63.     if (n <= 2)
  64.         return 1;
  65.     return Fibonachi(n - 1) + Fibonachi(n - 2);
  66. }
  67.  
  68.  
  69. void quickSort(long sz, int arr[]) {
  70.     int tmp;
  71.     int p = arr[sz / 2];
  72.     int i = 0, j = sz - 1;    
  73.     // разбиение на подмассивы
  74.     do {
  75.         while (arr[i] < p) i++;
  76.         while (arr[j] > p) j--;
  77.         if (i <= j) {
  78.             tmp = arr[i];
  79.             arr[i] = arr[j];
  80.             arr[j] = tmp;
  81.             i++;
  82.             j--;
  83.         }
  84.     } while (i <= j);
  85.     //cout << "terminal: " << p << " | ";
  86.     //showArr(sz, arr);
  87.     // рекурсивный вызов для подмассивов
  88.     if (j > 0) quickSort(j + 1, arr);
  89.     if (i < sz) quickSort(sz - i, arr + i);
  90. }
  91.  
  92. int binarySearch(int arr[], long sz, int val) {
  93.     int L = 0, R = sz - 1, M;
  94.     while (true) {
  95.         M = (L + R) / 2;
  96.         if (val < arr[M])
  97.             R = M - 1;
  98.         else if (val > arr[M])
  99.             L = M + 1;
  100.         else
  101.             return M;
  102.         if (L > R)
  103.             return -1;
  104.     }
  105. }
  106. void any_task(){
  107.     int n = 0;
  108.     for (int k = 0; k < 3; k++) {
  109.         n = 0;
  110.         while (n < 5) {
  111.             cout << "# ";
  112.             n++;
  113.         }
  114.         cout << endl;
  115.     }  
  116.     n = 0;
  117.     while (n < 5) {
  118.         for (int k = 0; k < 3; k++) {
  119.             cout << "A ";                    
  120.         }
  121.         n++;
  122.         cout << endl;
  123.     }
  124. }
  125.  
  126. void test_fibo(){
  127.     cout << "Golden: " << 0.5 * (sqrt(5) - 1);
  128.     for (int k = 0; k < 20; ++k) {
  129.         cout << double(Fibonachi(k)) / Fibonachi(k+1) << endl;
  130.     }
  131.     cout << endl;
  132. }
  133.  
  134. void test_quickSort(){
  135.     const int sz = 100;
  136.     int arr[sz]{11, 17, 4, 10, 29, 4, 18, 18, 22, 14};
  137.     genArr(sz, arr);
  138.     showArr(sz, arr);
  139.     quickSort(sz, arr);
  140.     showArr(sz, arr);
  141.    
  142.     int pos = binarySearch(arr, sz, 7711);
  143.     cout << pos << " ";
  144.     if (pos >= 0)
  145.         cout << arr[pos];
  146.     else
  147.         cout << "NO";
  148.     cout << endl;
  149. }
  150.  
  151. int main() {
  152.     test_quickSort();
  153.     //getchar();
  154.     return 0;
  155. }
Advertisement
Add Comment
Please, Sign In to add comment