Advertisement
DacCum

ШЕДЕВР

Feb 11th, 2021 (edited)
97
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 3.18 KB | None | 0 0
  1. //-45.15 -73.94 12 3 94.63 94.64 845.61 -52.15 894 -5 -9 45 6 9 1
  2.  
  3. #include <stdio.h>
  4. #include "windows.h" //для функцій SetConsoleCP() та SetConsoleOutputCP()
  5. #define N 15
  6.  
  7. template <typename T>
  8. void scanarr(T *a, int n) {
  9.     for(int i = 0; i < n; i++)
  10.         scanf("%g", &a[i]);
  11. }
  12.  
  13. template <typename T>
  14. void printarr(T *a, int n) {
  15.     for(int i = 0; i < n; i++)
  16.         printf("%g ", a[i]);   
  17.     printf("\n");
  18. }
  19.  
  20. template <typename T>
  21. void selectionSort(T *a, int n, char mode) {
  22.     T tmp, min;
  23.     int min_i;
  24.     if(mode == '+') {
  25.         for(int i = 0 ; i < n-1; i++) {
  26.             min = a[i];
  27.             min_i = i;
  28.             for(int j = i; j < n; j++)
  29.                 if(min > a[j]) {
  30.                     min = a[j];
  31.                     min_i = j;
  32.                 }
  33.             tmp = a[i];
  34.             a[i] = a[min_i];
  35.             a[min_i] = tmp;
  36.         }
  37.     }
  38.     if(mode == '-') {
  39.         for(int i = 0 ; i < n-1; i++) {
  40.             min = a[i];
  41.             min_i = i;
  42.             for(int j = i; j < n; j++)
  43.                 if(min < a[j]) {
  44.                     min = a[j];
  45.                     min_i = j;
  46.                 }
  47.             tmp = a[i];
  48.             a[i] = a[min_i];
  49.             a[min_i] = tmp;
  50.         }  
  51.     }
  52. }
  53.  
  54. template <typename T>
  55. void bubbleSort(T *a, int n, char mode) {
  56.     T tmp;
  57.     if(mode == '+') {  
  58.         for(int i = 0 ; i < n-1; i++) {
  59.             for(int j = 0 ; j < n-i-1 ; j++) {  
  60.                 if(a[j] > a[j+1]) {          
  61.                     tmp = a[j];
  62.                     a[j] = a[j+1];
  63.                     a[j+1] = tmp;
  64.                 }
  65.             }
  66.         }
  67.     }
  68.     if(mode == '-') {
  69.         for(int i = 0 ; i < n-1; i++) {
  70.             for(int j = 0 ; j < n-i-1 ; j++) {  
  71.                 if(a[j] < a[j+1]) {          
  72.                     tmp = a[j];
  73.                     a[j] = a[j+1];
  74.                     a[j+1] = tmp;
  75.                 }
  76.             }
  77.         }
  78.     }
  79. }
  80.  
  81. template < typename T >
  82. int binarySearch(T *a, int left, int right, T key, char mode) {
  83.     if(left <= right) {
  84.         if(mode == '+') {  
  85.             int middle = (left + right)/2;
  86.             if(key == a[middle]){
  87.                 return middle;
  88.             }
  89.             else if(a[middle] < key)
  90.                 return binarySearch(a, middle + 1, right, key, mode);
  91.             else
  92.                 return binarySearch(a, left, middle - 1, key, mode);
  93.         }  
  94.         if(mode == '-') {  
  95.             int middle = (left + right)/2;
  96.             if(key == a[middle])
  97.                 return middle;
  98.             else if(a[middle] > key)
  99.                 return binarySearch(a, middle + 1, right, key, mode);
  100.             else
  101.                 return binarySearch(a, left, middle - 1, key, mode);
  102.         }
  103.     } else
  104.         return -1; 
  105. }
  106.  
  107. int main() {
  108.     SetConsoleCP(1251); //змінюємо кодування консолі
  109.     SetConsoleOutputCP(1251); //щоб відображалась українська мова
  110.    
  111.     float *X = new float[N];
  112.     float A;
  113.     bool flag;
  114.     printf("введіть елементи масива: \n");
  115.     scanarr(X, N);
  116.     printf("введіть шуканий елемент:\n");
  117.     scanf("%g", &A);
  118.     for(int i = 0;i < N;i++)
  119.         if(X[i] == A) {
  120.             flag = 1;
  121.             printf("індекс шуканого елемента до сортировки = %d\n", i);
  122.         }
  123.     if(!flag)
  124.         printf("шуканого елемента немає в масиві\n");
  125.  
  126.     bubbleSort(X, N, '-');
  127.     printf("відсортований масив: \n");
  128.     printarr(X, N);
  129.  
  130.     int index = binarySearch(X, 0, N-1, A, '-');
  131.     if(index != -1)
  132.         printf("індекс шуканого елемента після сортировки = %d\n", index);
  133.     else
  134.         printf("шуканого елемента немає в масиві\n");  
  135.  
  136.     delete [] X;
  137.     return 0;
  138. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement