Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <fstream>
- using namespace std;
- ifstream f("date.in");
- ofstream g("date.out");
- void read(int *v, int n)
- {
- int i;
- for (i = 0; i < n; i++)
- f>>v[i];
- }
- void display(int *v, int n)
- {
- for (int i = 0; i < n; i++)
- g<<v[i]<<" ";
- }
- void insertionSort(int *v, int n)
- {
- int i, j, key;
- for (i = 1; i < n; i++)
- {
- key = v[i];
- j = i - 1;
- while (j >= 0 && key < v[j])
- {
- v[j + 1] = v[j];
- j--;
- }
- v[j + 1] = key;
- }
- }
- void selectionSort(int *v, int n)
- {
- int i, j, minPos;
- for (i = 0; i < n - 1; i++)
- {
- minPos = i;
- for (j = i + 1; j < n; j++)
- if (v[j] < v[minPos])
- minPos = j;
- swap (v[minPos],v[i]);
- }
- }
- void bubbleSort(int *v, int n)
- {
- int i, j;
- bool flag = true;
- for (i = 0; i < n - 1; i++)
- {
- if (flag == false) break;
- flag = false;
- for (j = 0; j < n - i - 1; j++)
- if (v[j] > v[j + 1])
- {
- swap(v[j], v[j+1]);
- flag = true;
- }
- }
- }
- void merge(int *v, int p, int m, int q)
- { //interclaseaza vectorii sortati v[p..m] si v[m+1...q]
- int i = p, j = m + 1, k = 0; // i pentru [p...m], j pentru [m+1...q], k pentru noul vector
- int b[100]; //vector auxiliar in care retin temporar rezultatul interclasarii
- while (i <= m && j <= q)
- if (v[i] < v[j])
- b[k++] = v[i++];
- else
- b[k++] = v[j++];
- // din cele 2 while-uri, se va intra doar intr-unul
- while (i <= m) b[k++] = v[i++];
- while (j <= q) b[k++] = v[j++];
- for (i = p; i <= q; i++) //transfer rezultatul interclasarii in vectorul original
- v[i] = b[i - p];
- }
- void mergeSort(int *v, int p, int q)
- { //sorteaza elementele v[p] ... v[q]
- if (q > p)
- {
- int m = (p + q) / 2;
- mergeSort(v, p, m);
- mergeSort(v, m+1, q);
- merge(v, p, m, q);
- }
- }
- int binarySearch(int v[], int l, int r, int x) //vectorul trebuie sortat crescator!!!
- {
- if (l > r) return -1; //spatiul de cautare e vid
- int m = (l + r)/2;
- if (x == v[m])
- return m;
- if (x < v[m]) //elementul se afla in stanga
- return binarySearch(v, l, m - 1, x);
- return binarySearch(v, m + 1, r, x); //elementul se poate afla numai in dreapta
- }
- int main()
- {
- int v[100], n;
- f>>n;
- read(v,n);
- bubbleSort(v,n);
- cout<<binarySearch(v,0,n-1,3);
- display(v,n);
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement