Advertisement
StoneHaos

2

Feb 1st, 2022
1,339
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.43 KB | None | 0 0
  1. #include <iostream>
  2. #include <stdlib.h>
  3. #include <time.h>
  4. #include <algorithm>
  5.  
  6. using namespace std;
  7.  
  8. void print(int *arr, int n) {
  9.     for (int i = 0; i < n; ++ i)
  10.         cout << arr[i] << " ";
  11.     cout << endl;
  12. }
  13.  
  14. int LS(int *arr, int n, int e) {
  15.     int res = -1;
  16.     for (int i = 0; i < n; ++ i) {
  17.         if (arr[i] == e) res = i;
  18.     }
  19.     return res;
  20. }
  21.  
  22. void QSort(int *arr, int n) {
  23.     if (n <= 1) return;
  24.     int l = 0;
  25.     int r = n - 1;
  26.     int pivot = (l + r + 1) / 2;
  27.     while (l < r) {
  28.         while (l < pivot && arr[l] <= arr[pivot]) ++ l;
  29.         while (r > pivot && arr[r] >= arr[pivot]) -- r;
  30.         if (l >= r) continue;
  31.         swap(arr[l], arr[r]);
  32.         if (l == pivot) pivot = r;
  33.         else if (r == pivot) pivot = l;
  34.     }
  35.     QSort(arr, pivot);
  36.     QSort(arr + pivot, n - pivot);
  37. }
  38.  
  39. int IS(int *A, int N, int key) {
  40.     int m, l = 0, r = N - 1;
  41.     while (A[l] <= key && A[r] >= key) {
  42.         m = l + ((key - A[l])*(r - l)) / (A[r] - A[l]);
  43.         if (A[m] < key) l = m + 1;
  44.         else if (A[m] > key) r = m - 1;
  45.         else {
  46.             l = m;
  47.             break;
  48.         }
  49.     }
  50.     if (A[l] == key) return l; else return -1;
  51.  
  52. }
  53.  
  54. int main(void) {
  55.     srand(time(NULL));
  56.     int n;
  57.     cin >> n;
  58.     int *arr = (int*)malloc(n * sizeof(int));
  59.     for (int i = 0; i < n; ++ i) {
  60.         arr[i] = rand() % 100;
  61.     }
  62.     print(arr, n);
  63.     cout << "> ";
  64.     int a;
  65.     cin >> a;
  66.     cout << LS(arr, n, a) << endl << endl;
  67.     QSort(arr, n);
  68.     print(arr, n);
  69.     cout << "> ";
  70.     cin >> a;
  71.     cout << IS(arr, n, a) << endl << endl;
  72.     free(arr);
  73.     return 0;
  74. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement