Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //-45.15 -73.94 12 3 94.63 94.64 845.61 -52.15 894 -5 -9 45 6 9 1
- #include <stdio.h>
- #include "windows.h" //для функцій SetConsoleCP() та SetConsoleOutputCP()
- #define N 15
- template <typename T>
- void scanarr(T *a, int n) {
- for(int i = 0; i < n; i++)
- scanf("%g", &a[i]);
- }
- template <typename T>
- void printarr(T *a, int n) {
- for(int i = 0; i < n; i++)
- printf("%g ", a[i]);
- printf("\n");
- }
- template <typename T>
- void selectionSort(T *a, int n, char mode) {
- T tmp, min;
- int min_i;
- if(mode == '+') {
- for(int i = 0 ; i < n-1; i++) {
- min = a[i];
- min_i = i;
- for(int j = i; j < n; j++)
- if(min > a[j]) {
- min = a[j];
- min_i = j;
- }
- tmp = a[i];
- a[i] = a[min_i];
- a[min_i] = tmp;
- }
- }
- if(mode == '-') {
- for(int i = 0 ; i < n-1; i++) {
- min = a[i];
- min_i = i;
- for(int j = i; j < n; j++)
- if(min < a[j]) {
- min = a[j];
- min_i = j;
- }
- tmp = a[i];
- a[i] = a[min_i];
- a[min_i] = tmp;
- }
- }
- }
- template <typename T>
- void bubbleSort(T *a, int n, char mode) {
- T tmp;
- if(mode == '+') {
- for(int i = 0 ; i < n-1; i++) {
- for(int j = 0 ; j < n-i-1 ; j++) {
- if(a[j] > a[j+1]) {
- tmp = a[j];
- a[j] = a[j+1];
- a[j+1] = tmp;
- }
- }
- }
- }
- if(mode == '-') {
- for(int i = 0 ; i < n-1; i++) {
- for(int j = 0 ; j < n-i-1 ; j++) {
- if(a[j] < a[j+1]) {
- tmp = a[j];
- a[j] = a[j+1];
- a[j+1] = tmp;
- }
- }
- }
- }
- }
- template < typename T >
- int binarySearch(T *a, int left, int right, T key, char mode) {
- if(left <= right) {
- if(mode == '+') {
- int middle = (left + right)/2;
- if(key == a[middle]){
- return middle;
- }
- else if(a[middle] < key)
- return binarySearch(a, middle + 1, right, key, mode);
- else
- return binarySearch(a, left, middle - 1, key, mode);
- }
- if(mode == '-') {
- int middle = (left + right)/2;
- if(key == a[middle])
- return middle;
- else if(a[middle] > key)
- return binarySearch(a, middle + 1, right, key, mode);
- else
- return binarySearch(a, left, middle - 1, key, mode);
- }
- } else
- return -1;
- }
- int main() {
- SetConsoleCP(1251); //змінюємо кодування консолі
- SetConsoleOutputCP(1251); //щоб відображалась українська мова
- float *X = new float[N];
- float A;
- bool flag;
- printf("введіть елементи масива: \n");
- scanarr(X, N);
- printf("введіть шуканий елемент:\n");
- scanf("%g", &A);
- for(int i = 0;i < N;i++)
- if(X[i] == A) {
- flag = 1;
- printf("індекс шуканого елемента до сортировки = %d\n", i);
- }
- if(!flag)
- printf("шуканого елемента немає в масиві\n");
- bubbleSort(X, N, '-');
- printf("відсортований масив: \n");
- printarr(X, N);
- int index = binarySearch(X, 0, N-1, A, '-');
- if(index != -1)
- printf("індекс шуканого елемента після сортировки = %d\n", index);
- else
- printf("шуканого елемента немає в масиві\n");
- delete [] X;
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement